Compare commits
19 Commits
2511-1.0.0
...
test-docu-
| Author | SHA1 | Date | |
|---|---|---|---|
| eb429cf014 | |||
| 6cd2ad4f9e | |||
| e046384d78 | |||
| 030412f244 | |||
| 8589092216 | |||
| 799e5c55ff | |||
| 1831e65c6c | |||
| d7c8336958 | |||
| 1d4df8d2ec | |||
| 048416898e | |||
| d79e4969ac | |||
| 5244e8066a | |||
| 1d859a0923 | |||
| 331948b95a | |||
| 7db0e0dc9e | |||
| e9b7417a21 | |||
| f1eba28dc1 | |||
| 839b1c755d | |||
| 07b032719d |
124
.gitea/workflows/build_and_test.yml
Normal file
124
.gitea/workflows/build_and_test.yml
Normal file
@@ -0,0 +1,124 @@
|
||||
name: Build Packages
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '**'
|
||||
tags:
|
||||
- '**'
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build-rpm:
|
||||
name: build:rpm (${{ matrix.distro }})
|
||||
runs-on: ${{ matrix.runner }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- runner: jfjoch_rocky8
|
||||
distro: rocky8
|
||||
cmake_flags: -DJFJOCH_INSTALL_DRIVER_SOURCE=ON -DJFJOCH_VIEWER_BUILD=ON
|
||||
- runner: jfjoch_rocky8
|
||||
distro: rocky8_sls9
|
||||
cmake_flags: -DJFJOCH_INSTALL_DRIVER_SOURCE=OFF -DJFJOCH_VIEWER_BUILD=OFF -DSLS9=ON
|
||||
- runner: jfjoch_rocky9
|
||||
distro: rocky9
|
||||
cmake_flags: -DJFJOCH_INSTALL_DRIVER_SOURCE=ON -DJFJOCH_VIEWER_BUILD=ON
|
||||
- runner: jfjoch_ubuntu2204
|
||||
distro: ubuntu2204
|
||||
cmake_flags: -DJFJOCH_INSTALL_DRIVER_SOURCE=ON -DJFJOCH_VIEWER_BUILD=ON
|
||||
- runner: jfjoch_ubuntu2404
|
||||
distro: ubuntu2404
|
||||
cmake_flags: -DJFJOCH_INSTALL_DRIVER_SOURCE=ON -DJFJOCH_VIEWER_BUILD=ON
|
||||
- runner: jfjoch_rocky8
|
||||
distro: rocky8_nocuda
|
||||
cmake_flags: -DJFJOCH_INSTALL_DRIVER_SOURCE=OFF -DJFJOCH_VIEWER_BUILD=OFF -DJFJOCH_USE_CUDA=OFF
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Build packages
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ${{ matrix.cmake_flags }} ..
|
||||
ninja frontend
|
||||
ninja -j16 package
|
||||
shopt -s nullglob
|
||||
files=( *.rpm *.deb )
|
||||
if (( ${#files[@]} )); then
|
||||
mv "${files[@]}" ..
|
||||
else
|
||||
echo "No packages found to move"
|
||||
fi
|
||||
python-client:
|
||||
name: Generate python client
|
||||
runs-on: jfjoch_rocky8
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Build python client
|
||||
shell: bash
|
||||
run: bash gen_python_client.sh
|
||||
documentation:
|
||||
name: Build documentation
|
||||
runs-on: jfjoch_rocky8
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Build documentation
|
||||
shell: bash
|
||||
run: bash make_doc.sh
|
||||
- name: Upload documentation
|
||||
if: github.ref_type == 'tag'
|
||||
shell: bash
|
||||
run: |
|
||||
git checkout --orphan gitea-pages
|
||||
git reset --hard
|
||||
# Remove everything except .git and public
|
||||
git clean -fdx -e public -e .git
|
||||
|
||||
# Move public contents to root and remove the now-empty public dir
|
||||
shopt -s dotglob nullglob
|
||||
mv public/* .
|
||||
rm -rf public
|
||||
git add .
|
||||
git commit -m "Deploy site"
|
||||
git push -f https://${{secrets.GITHUB_TOKEN}}@gitea.psi.ch/${{ github.repository }}.git gitea-pages
|
||||
gpu-test:
|
||||
name: GPU test
|
||||
runs-on: jfjoch_rocky8
|
||||
container:
|
||||
image: gitea.psi.ch/leonarski_f/jfjoch_rocky8:2509
|
||||
options: --gpus all
|
||||
steps:
|
||||
- name: List GPUs
|
||||
shell: bash
|
||||
run: nvidia-smi
|
||||
unit-tests:
|
||||
name: Unit tests
|
||||
runs-on: jfjoch_rocky8
|
||||
container:
|
||||
image: gitea.psi.ch/leonarski_f/jfjoch_rocky8:2509
|
||||
options: --gpus all
|
||||
timeout-minutes: 90
|
||||
env:
|
||||
CTEST_OUTPUT_ON_FAILURE: '1'
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Build tests
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
|
||||
ninja -j48 jfjoch_test jfjoch_hdf5_test
|
||||
- name: Run unit tests
|
||||
shell: bash
|
||||
run: |
|
||||
cd build/tests
|
||||
./jfjoch_test
|
||||
- name: Run hdf5 test
|
||||
shell: bash
|
||||
run: |
|
||||
cd build/tools
|
||||
./jfjoch_hdf5_test ../../tests/test_data/compression_benchmark.h5
|
||||
119
CMakeLists.txt
119
CMakeLists.txt
@@ -198,48 +198,99 @@ IF (NOT JFJOCH_WRITER_ONLY)
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
SET(CMAKE_INSTALL_PREFIX /opt/jfjoch CACHE PATH "Default directory" FORCE)
|
||||
SET(CMAKE_INSTALL_PREFIX /opt/jfjoch CACHE PATH "Default directory" FORCE)
|
||||
ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
|
||||
# Set Package Name
|
||||
# Initialize CPACK_COMPONENTS_ALL with common components
|
||||
SET(CPACK_COMPONENTS_ALL jfjoch writer)
|
||||
IF (SLS9)
|
||||
SET(CPACK_PACKAGE_NAME "jfjoch-slsdet9")
|
||||
ELSE()
|
||||
SET(CPACK_PACKAGE_NAME "jfjoch")
|
||||
ENDIF()
|
||||
SET(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION /usr/src /usr/share /usr/share/dbus-1 /usr/share/dbus-1/services)
|
||||
set(CPACK_COMPONENTS_ALL jfjoch writer)
|
||||
if (SLS9)
|
||||
set(CPACK_PACKAGE_NAME "jfjoch-slsdet9")
|
||||
else()
|
||||
set(CPACK_PACKAGE_NAME "jfjoch")
|
||||
endif()
|
||||
|
||||
IF (JFJOCH_INSTALL_DRIVER_SOURCE)
|
||||
LIST(APPEND CPACK_COMPONENTS_ALL driver-dkms)
|
||||
SET(CPACK_RPM_DRIVER-DKMS_PACKAGE_REQUIRES "dkms, gcc, bash, sed")
|
||||
SET(CPACK_RPM_DRIVER-DKMS_PACKAGE_ARCHITECTURE "noarch")
|
||||
SET(CPACK_RPM_DRIVER-DKMS_POST_INSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/fpga/pcie_driver/postinstall.sh)
|
||||
SET(CPACK_RPM_DRIVER-DKMS_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/fpga/pcie_driver/preuninstall.sh)
|
||||
ELSE()
|
||||
SET(CPACK_COMPONENTS_ALL jfjoch writer)
|
||||
ENDIF()
|
||||
# Add optional components
|
||||
if (JFJOCH_INSTALL_DRIVER_SOURCE)
|
||||
list(APPEND CPACK_COMPONENTS_ALL driver-dkms)
|
||||
else()
|
||||
set(CPACK_COMPONENTS_ALL jfjoch writer)
|
||||
endif()
|
||||
|
||||
IF (JFJOCH_VIEWER_BUILD)
|
||||
LIST(APPEND CPACK_COMPONENTS_ALL viewer)
|
||||
ENDIF()
|
||||
if (JFJOCH_VIEWER_BUILD)
|
||||
list(APPEND CPACK_COMPONENTS_ALL viewer)
|
||||
endif()
|
||||
|
||||
SET(CPACK_GENERATOR RPM)
|
||||
SET(CPACK_RPM_COMPONENT_INSTALL ON)
|
||||
SET(CPACK_RPM_MAIN_COMPONENT jfjoch)
|
||||
SET(CPACK_RPM_PACKAGE_RELEASE_DIST ON)
|
||||
SET(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
|
||||
SET(CPACK_RPM_PACKAGE_VERSION ${JFJOCH_VERSION})
|
||||
SET(CPACK_RPM_PACKAGE_RELEASE 1)
|
||||
SET(CPACK_RPM_PACKAGE_SUMMARY "Jungfraujoch data acquisition system")
|
||||
SET(CPACK_RPM_PACKAGE_DESCRIPTION "Jungfraujoch")
|
||||
# Common metadata
|
||||
set(CPACK_PACKAGE_CONTACT "Filip Leonarski <filip.leonarski@psi.ch>")
|
||||
set(CPACK_PACKAGE_VENDOR "Paul Scherrer Institut")
|
||||
set(CPACK_PACKAGE_VERSION ${JFJOCH_VERSION})
|
||||
|
||||
SET(CPACK_PACKAGE_CONTACT "Filip Leonarski <filip.leonarski@psi.ch>")
|
||||
# Set The Vendor Name
|
||||
SET(CPACK_PACKAGE_VENDOR "Paul Scherrer Institut")
|
||||
# OS-aware packaging: DEB on Debian/Ubuntu, RPM on RHEL/Rocky
|
||||
if (EXISTS "/etc/debian_version")
|
||||
set(CPACK_PACKAGE_LICENSE "GPL-3.0-only")
|
||||
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
|
||||
|
||||
# Debian/Ubuntu: .deb with components
|
||||
set(CPACK_GENERATOR "DEB")
|
||||
set(CPACK_DEB_COMPONENT_INSTALL ON)
|
||||
set(CPACK_DEBIAN_MAIN_COMPONENT jfjoch)
|
||||
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
|
||||
|
||||
# Enable automatic shlib dependency discovery
|
||||
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
||||
|
||||
# Optional DEB metadata (tune as needed)
|
||||
set(CPACK_DEBIAN_PACKAGE_SECTION "science")
|
||||
# set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://example.org/jfjoch")
|
||||
|
||||
# DKMS component (maps from RPM settings)
|
||||
if (JFJOCH_INSTALL_DRIVER_SOURCE)
|
||||
# Dependencies and arch for the DKMS component
|
||||
# Note: component name "driver-dkms" maps to variable suffix "DRIVER_DKMS"
|
||||
set(CPACK_DEBIAN_DRIVER_DKMS_PACKAGE_DEPENDS "dkms, gcc, bash, sed")
|
||||
set(CPACK_DEBIAN_DRIVER_DKMS_PACKAGE_ARCHITECTURE "all")
|
||||
|
||||
# Provide Debian control scripts (postinst/prerm).
|
||||
# We rename existing scripts to Debian control names at configure time.
|
||||
set(_dkms_ctrl_dir "${CMAKE_CURRENT_BINARY_DIR}/cpack-debian-driver-dkms")
|
||||
file(MAKE_DIRECTORY "${_dkms_ctrl_dir}")
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/fpga/pcie_driver/postinstall.sh
|
||||
${_dkms_ctrl_dir}/postinst COPYONLY)
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/fpga/pcie_driver/preuninstall.sh
|
||||
${_dkms_ctrl_dir}/prerm COPYONLY)
|
||||
set(CPACK_DEBIAN_DRIVER_DKMS_PACKAGE_CONTROL_EXTRA
|
||||
"${_dkms_ctrl_dir}/postinst;${_dkms_ctrl_dir}/prerm")
|
||||
endif()
|
||||
|
||||
elseif (EXISTS "/etc/redhat-release")
|
||||
# RHEL/Rocky: .rpm with components (original behavior)
|
||||
set(CPACK_GENERATOR "RPM")
|
||||
set(CPACK_RPM_COMPONENT_INSTALL ON)
|
||||
set(CPACK_RPM_MAIN_COMPONENT jfjoch)
|
||||
set(CPACK_RPM_PACKAGE_RELEASE_DIST ON)
|
||||
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
|
||||
set(CPACK_RPM_PACKAGE_VERSION ${JFJOCH_VERSION})
|
||||
set(CPACK_RPM_PACKAGE_RELEASE 1)
|
||||
set(CPACK_RPM_PACKAGE_SUMMARY "Jungfraujoch data acquisition system")
|
||||
set(CPACK_RPM_PACKAGE_DESCRIPTION "Jungfraujoch")
|
||||
set(CPACK_RPM_PACKAGE_LICENSE "GPLv3")
|
||||
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION
|
||||
/usr/src /usr/share /usr/share/dbus-1 /usr/share/dbus-1/services)
|
||||
|
||||
# DKMS component scripts and requirements for RPM
|
||||
if (JFJOCH_INSTALL_DRIVER_SOURCE)
|
||||
set(CPACK_RPM_DRIVER-DKMS_PACKAGE_REQUIRES "dkms, gcc, bash, sed")
|
||||
set(CPACK_RPM_DRIVER-DKMS_PACKAGE_ARCHITECTURE "noarch")
|
||||
set(CPACK_RPM_DRIVER-DKMS_POST_INSTALL_SCRIPT_FILE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/fpga/pcie_driver/postinstall.sh)
|
||||
set(CPACK_RPM_DRIVER-DKMS_PRE_UNINSTALL_SCRIPT_FILE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/fpga/pcie_driver/preuninstall.sh)
|
||||
endif()
|
||||
else()
|
||||
# Fallback if OS is unknown
|
||||
set(CPACK_GENERATOR "TGZ")
|
||||
endif()
|
||||
|
||||
# Set The License Information
|
||||
SET(CPACK_RPM_PACKAGE_LICENSE "GPLv3")
|
||||
|
||||
INCLUDE(CPack)
|
||||
|
||||
128
docker/rocky8/Dockerfile
Normal file
128
docker/rocky8/Dockerfile
Normal file
@@ -0,0 +1,128 @@
|
||||
FROM nvidia/cuda:12.9.1-devel-rockylinux8
|
||||
LABEL authors="leonarski_f"
|
||||
|
||||
ARG OPENSSL_VERSION=3.3.2
|
||||
ARG QT_VERSION=6.9.0
|
||||
ARG NODE_MAJOR=22
|
||||
ARG EIGEN_TAG=3.4.0
|
||||
|
||||
# Update base and install common utilities
|
||||
RUN dnf -y update && \
|
||||
dnf -y install --enablerepo=devel \
|
||||
dnf-plugins-core \
|
||||
epel-release \
|
||||
git \
|
||||
which \
|
||||
ca-certificates \
|
||||
wget \
|
||||
tar \
|
||||
xz \
|
||||
make \
|
||||
cmake \
|
||||
gcc-toolset-13 \
|
||||
gcc-toolset-13-gcc \
|
||||
gcc-toolset-13-gcc-c++ \
|
||||
gcc-toolset-13-gdb \
|
||||
rpm-build \
|
||||
rpmdevtools \
|
||||
numactl-devel \
|
||||
openssl-devel \
|
||||
redhat-rpm-config \
|
||||
ninja-build \
|
||||
libxcb-devel \
|
||||
xcb-util-wm-devel \
|
||||
xcb-util-image-devel \
|
||||
xcb-util-keysyms-devel \
|
||||
xcb-util-renderutil-devel \
|
||||
libxkbcommon-devel \
|
||||
libX11-devel \
|
||||
libXext-devel \
|
||||
libXrender-devel \
|
||||
libXi-devel \
|
||||
libXrandr-devel \
|
||||
libXcursor-devel \
|
||||
libXfixes-devel \
|
||||
libXinerama-devel \
|
||||
mesa-libGL-devel \
|
||||
mesa-libEGL-devel \
|
||||
dbus-devel \
|
||||
zlib-devel \
|
||||
glib2-devel \
|
||||
fontconfig-devel \
|
||||
zlib-static \
|
||||
java-21-openjdk-headless \
|
||||
java-21-openjdk-devel \
|
||||
perl \
|
||||
perl-IPC-Cmd \
|
||||
python3 \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
freetype-devel && \
|
||||
dnf clean all && rm -rf /var/cache/dnf
|
||||
|
||||
RUN set -eux; \
|
||||
cd /tmp; \
|
||||
curl -LO https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz; \
|
||||
tar -xf openssl-${OPENSSL_VERSION}.tar.gz; \
|
||||
cd openssl-${OPENSSL_VERSION}; \
|
||||
./Configure linux-x86_64 no-shared no-module no-tests --prefix=/opt/openssl-${OPENSSL_VERSION} --libdir=lib; \
|
||||
make -j"$(nproc)"; \
|
||||
make install_sw; \
|
||||
cd /; rm -rf /tmp/openssl-${OPENSSL_VERSION} /tmp/openssl-${OPENSSL_VERSION}.tar.gz
|
||||
|
||||
# Expose static OpenSSL to CMake/pkg-config
|
||||
ENV OPENSSL_ROOT_DIR=/opt/openssl-${OPENSSL_VERSION}
|
||||
ENV PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig:${OPENSSL_ROOT_DIR}/lib64/pkgconfig:${PKG_CONFIG_PATH}
|
||||
|
||||
# Install a recent Node.js (NodeSource). Change NODE_MAJOR if you want another major version.
|
||||
RUN curl -fsSL https://rpm.nodesource.com/setup_${NODE_MAJOR}.x | bash - && \
|
||||
dnf -y install nodejs && \
|
||||
dnf clean all && rm -rf /var/cache/dnf && \
|
||||
node --version && npm --version && (corepack enable || true)
|
||||
|
||||
RUN git clone --depth 1 --branch ${EIGEN_TAG} https://gitlab.com/libeigen/eigen.git /tmp/eigen && \
|
||||
cd /tmp/eigen && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/eigen && \
|
||||
make install && \
|
||||
rm -rf /tmp/eigen
|
||||
|
||||
# Make GCC/G++ 13 the default for builds
|
||||
ENV GCC_TOOLSET_ROOT=/opt/rh/gcc-toolset-13/root
|
||||
ENV PATH=${GCC_TOOLSET_ROOT}/usr/bin:${PATH}
|
||||
ENV CC=${GCC_TOOLSET_ROOT}/usr/bin/gcc
|
||||
ENV CXX=${GCC_TOOLSET_ROOT}/usr/bin/g++
|
||||
|
||||
ARG QT_PREFIX=/opt/qt-${QT_VERSION}-static
|
||||
RUN set -eux; \
|
||||
cd /tmp; \
|
||||
curl -LO https://download.qt.io/official_releases/qt/6.9/${QT_VERSION}/single/qt-everywhere-src-${QT_VERSION}.tar.xz; \
|
||||
tar -xf qt-everywhere-src-${QT_VERSION}.tar.xz; \
|
||||
mkdir -p qt-everywhere-src-${QT_VERSION}/build && cd qt-everywhere-src-${QT_VERSION}/build; \
|
||||
cmake -G Ninja \
|
||||
-DQT_BUILD_SUBMODULES="qtbase;qtshadertools;qtdeclarative;qtcharts" \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DQT_BUILD_TESTS=OFF \
|
||||
-DQT_BUILD_EXAMPLES=OFF \
|
||||
-DQT_FEATURE_dbus=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=${QT_PREFIX} \
|
||||
-DCMAKE_C_COMPILER=${CC} \
|
||||
-DCMAKE_CXX_COMPILER=${CXX} \
|
||||
-DQT_FEATURE_openssl=ON \
|
||||
-DQT_FEATURE_openssl_linked=ON \
|
||||
-DOPENSSL_USE_STATIC_LIBS=TRUE \
|
||||
..; \
|
||||
cmake --build . -j"$(nproc)"; \
|
||||
cmake --install .; \
|
||||
cd /; rm -rf /tmp/qt-everywhere-src-${QT_VERSION} /tmp/qt-everywhere-src-${QT_VERSION}.tar.xz
|
||||
|
||||
ENV CMAKE_PREFIX_PATH=/opt/qt-${QT_VERSION}-static:/opt/eigen
|
||||
|
||||
# Set workdir for your project
|
||||
WORKDIR /workspace
|
||||
|
||||
# Default entrypoint prints tool versions and hints.
|
||||
CMD ["/bin/bash", "-l"]
|
||||
128
docker/rocky9/Dockerfile
Normal file
128
docker/rocky9/Dockerfile
Normal file
@@ -0,0 +1,128 @@
|
||||
FROM nvidia/cuda:13.0.1-devel-rockylinux9
|
||||
LABEL authors="leonarski_f"
|
||||
|
||||
ARG OPENSSL_VERSION=3.3.2
|
||||
ARG QT_VERSION=6.9.0
|
||||
ARG NODE_MAJOR=22
|
||||
ARG EIGEN_TAG=3.4.0
|
||||
|
||||
# Update base, enable CRB (RHEL/Rocky 9), and install toolchain + Qt deps
|
||||
RUN dnf -y update && \
|
||||
dnf -y install \
|
||||
'dnf-command(config-manager)' && \
|
||||
dnf config-manager --set-enabled crb && \
|
||||
dnf -y install --enablerepo=devel \
|
||||
dnf-plugins-core \
|
||||
epel-release \
|
||||
git \
|
||||
which \
|
||||
ca-certificates \
|
||||
wget \
|
||||
tar \
|
||||
xz \
|
||||
make \
|
||||
cmake \
|
||||
gcc-toolset-13 \
|
||||
gcc-toolset-13-gcc \
|
||||
gcc-toolset-13-gcc-c++ \
|
||||
gcc-toolset-13-gdb \
|
||||
rpm-build \
|
||||
rpmdevtools \
|
||||
numactl-devel \
|
||||
redhat-rpm-config \
|
||||
ninja-build \
|
||||
python3 \
|
||||
perl \
|
||||
pkgconf-pkg-config \
|
||||
libxcb-devel \
|
||||
xcb-util-wm-devel \
|
||||
xcb-util-image-devel \
|
||||
xcb-util-keysyms-devel \
|
||||
xcb-util-renderutil-devel \
|
||||
libxkbcommon-devel \
|
||||
libX11-devel \
|
||||
libXext-devel \
|
||||
libXrender-devel \
|
||||
libXi-devel \
|
||||
libXrandr-devel \
|
||||
libXcursor-devel \
|
||||
libXfixes-devel \
|
||||
libXinerama-devel \
|
||||
mesa-libGL-devel \
|
||||
mesa-libEGL-devel \
|
||||
dbus-devel \
|
||||
zlib-devel \
|
||||
glib2-devel \
|
||||
zlib-static \
|
||||
fontconfig-devel \
|
||||
freetype-devel && \
|
||||
dnf clean all && rm -rf /var/cache/dnf
|
||||
|
||||
RUN set -eux; \
|
||||
cd /tmp; \
|
||||
curl -LO https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz; \
|
||||
tar -xf openssl-${OPENSSL_VERSION}.tar.gz; \
|
||||
cd openssl-${OPENSSL_VERSION}; \
|
||||
./Configure linux-x86_64 no-shared no-module no-tests --prefix=/opt/openssl-${OPENSSL_VERSION} --libdir=lib; \
|
||||
make -j"$(nproc)"; \
|
||||
make install_sw; \
|
||||
cd /; rm -rf /tmp/openssl-${OPENSSL_VERSION} /tmp/openssl-${OPENSSL_VERSION}.tar.gz
|
||||
|
||||
# Expose static OpenSSL to CMake/pkg-config
|
||||
ENV OPENSSL_ROOT_DIR=/opt/openssl-${OPENSSL_VERSION}
|
||||
ENV PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig:${OPENSSL_ROOT_DIR}/lib64/pkgconfig:${PKG_CONFIG_PATH}
|
||||
|
||||
# Install a recent Node.js (NodeSource). Change NODE_MAJOR if you want another major version.
|
||||
RUN curl -fsSL https://rpm.nodesource.com/setup_${NODE_MAJOR}.x | bash - && \
|
||||
dnf -y install nodejs && \
|
||||
dnf clean all && rm -rf /var/cache/dnf && \
|
||||
node --version && npm --version && (corepack enable || true)
|
||||
|
||||
# Header-only Eigen (clone a specific tag)
|
||||
RUN git clone --depth 1 --branch ${EIGEN_TAG} https://gitlab.com/libeigen/eigen.git /tmp/eigen && \
|
||||
cd /tmp/eigen && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/eigen && \
|
||||
make install && \
|
||||
rm -rf /tmp/eigen
|
||||
|
||||
# Make GCC/G++ 13 the default for builds
|
||||
ENV GCC_TOOLSET_ROOT=/opt/rh/gcc-toolset-13/root
|
||||
ENV PATH=${GCC_TOOLSET_ROOT}/usr/bin:${PATH}
|
||||
ENV CC=${GCC_TOOLSET_ROOT}/usr/bin/gcc
|
||||
ENV CXX=${GCC_TOOLSET_ROOT}/usr/bin/g++
|
||||
|
||||
# Build and install static Qt 6.9 with Core, Gui, Widgets, Charts, DBus
|
||||
ARG QT_PREFIX=/opt/qt-${QT_VERSION}-static
|
||||
RUN set -eux; \
|
||||
cd /tmp; \
|
||||
curl -LO https://download.qt.io/official_releases/qt/6.9/${QT_VERSION}/single/qt-everywhere-src-${QT_VERSION}.tar.xz; \
|
||||
tar -xf qt-everywhere-src-${QT_VERSION}.tar.xz; \
|
||||
mkdir -p qt-everywhere-src-${QT_VERSION}/build && cd qt-everywhere-src-${QT_VERSION}/build; \
|
||||
cmake -G Ninja \
|
||||
-DQT_BUILD_SUBMODULES="qtbase;qtshadertools;qtdeclarative;qtcharts" \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DQT_BUILD_TESTS=OFF \
|
||||
-DQT_BUILD_EXAMPLES=OFF \
|
||||
-DQT_FEATURE_dbus=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=${QT_PREFIX} \
|
||||
-DCMAKE_C_COMPILER=${CC} \
|
||||
-DCMAKE_CXX_COMPILER=${CXX} \
|
||||
-DQT_FEATURE_openssl=ON \
|
||||
-DQT_FEATURE_openssl_linked=ON \
|
||||
-DOPENSSL_USE_STATIC_LIBS=TRUE \
|
||||
..; \
|
||||
cmake --build . -j"$(nproc)"; \
|
||||
cmake --install .; \
|
||||
cd /; rm -rf /tmp/qt-everywhere-src-${QT_VERSION} /tmp/qt-everywhere-src-${QT_VERSION}.tar.xz
|
||||
|
||||
# Make Qt and Eigen discoverable by CMake
|
||||
ENV CMAKE_PREFIX_PATH=/opt/qt-${QT_VERSION}-static:/opt/eigen
|
||||
|
||||
# Set workdir for your project
|
||||
WORKDIR /workspace
|
||||
|
||||
# Default entrypoint: interactive shell
|
||||
CMD ["/bin/bash", "-l"]
|
||||
136
docker/ubuntu2204/Dockerfile
Normal file
136
docker/ubuntu2204/Dockerfile
Normal file
@@ -0,0 +1,136 @@
|
||||
# Ubuntu 22.04 (Jammy) base with CUDA 13 devel toolchain
|
||||
FROM nvidia/cuda:13.0.1-devel-ubuntu22.04
|
||||
LABEL authors="leonarski_f"
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ARG OPENSSL_VERSION=3.3.2
|
||||
ARG QT_VERSION=6.9.0
|
||||
ARG NODE_MAJOR=22
|
||||
ARG EIGEN_TAG=3.4.0
|
||||
|
||||
# Update base and install toolchain + Qt dependencies
|
||||
# Notes:
|
||||
# - GCC/G++ 13 are installed from jammy-backports
|
||||
# - XCB/X11/OpenGL/EGL/DBus/fontconfig/freetype/zlib headers installed for building static Qt
|
||||
RUN set -eux; \
|
||||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
curl \
|
||||
wget \
|
||||
git \
|
||||
tar \
|
||||
xz-utils \
|
||||
build-essential \
|
||||
cmake \
|
||||
ninja-build \
|
||||
python3 \
|
||||
perl \
|
||||
pkg-config \
|
||||
gdb \
|
||||
file \
|
||||
dpkg-dev \
|
||||
fakeroot \
|
||||
libnuma-dev \
|
||||
libxcb1-dev \
|
||||
libx11-dev \
|
||||
libxext-dev \
|
||||
libxrender-dev \
|
||||
libxi-dev \
|
||||
libxrandr-dev \
|
||||
libxcursor-dev \
|
||||
libxfixes-dev \
|
||||
libxinerama-dev \
|
||||
libxkbcommon-dev \
|
||||
libx11-xcb-dev \
|
||||
libxcb-image0-dev \
|
||||
libxcb-icccm4-dev \
|
||||
libxcb-keysyms1-dev \
|
||||
libxcb-render-util0-dev \
|
||||
libxcb-util-dev \
|
||||
libxcb-randr0-dev \
|
||||
libxcb-xkb-dev \
|
||||
libxcb-shm0-dev \
|
||||
libgl1-mesa-dev \
|
||||
libegl1-mesa-dev \
|
||||
libdbus-1-dev \
|
||||
zlib1g-dev \
|
||||
libglib2.0-dev \
|
||||
libfontconfig1-dev \
|
||||
libfreetype6-dev; \
|
||||
apt-get -y install gcc-12 g++-12; \
|
||||
apt-get clean; \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Build a static OpenSSL
|
||||
RUN set -eux; \
|
||||
cd /tmp; \
|
||||
curl -LO https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz; \
|
||||
tar -xf openssl-${OPENSSL_VERSION}.tar.gz; \
|
||||
cd openssl-${OPENSSL_VERSION}; \
|
||||
./Configure linux-x86_64 no-shared no-module no-tests --prefix=/opt/openssl-${OPENSSL_VERSION} --libdir=lib; \
|
||||
make -j"$(nproc)"; \
|
||||
make install_sw; \
|
||||
cd /; rm -rf /tmp/openssl-${OPENSSL_VERSION} /tmp/openssl-${OPENSSL_VERSION}.tar.gz
|
||||
|
||||
# Expose static OpenSSL to CMake/pkg-config
|
||||
ENV OPENSSL_ROOT_DIR=/opt/openssl-${OPENSSL_VERSION}
|
||||
ENV PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig:${OPENSSL_ROOT_DIR}/lib64/pkgconfig:${PKG_CONFIG_PATH}
|
||||
|
||||
# Install a recent Node.js (NodeSource)
|
||||
RUN set -eux; \
|
||||
curl -fsSL https://deb.nodesource.com/setup_${NODE_MAJOR}.x | bash -; \
|
||||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends nodejs; \
|
||||
apt-get clean; \
|
||||
rm -rf /var/lib/apt/lists/*; \
|
||||
node --version; npm --version; (corepack enable || true)
|
||||
|
||||
# Header-only Eigen (specific tag)
|
||||
RUN git clone --depth 1 --branch ${EIGEN_TAG} https://gitlab.com/libeigen/eigen.git /tmp/eigen && \
|
||||
cd /tmp/eigen && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/eigen && \
|
||||
make install && \
|
||||
rm -rf /tmp/eigen
|
||||
|
||||
# Use GCC/G++ 12 for builds
|
||||
ENV CC=/usr/bin/gcc-12
|
||||
ENV CXX=/usr/bin/g++-12
|
||||
ENV PATH=/usr/bin:${PATH}
|
||||
|
||||
# Build and install static Qt 6.9 with Core, Gui, Widgets, Charts, DBus
|
||||
ARG QT_PREFIX=/opt/qt-${QT_VERSION}-static
|
||||
RUN set -eux; \
|
||||
cd /tmp; \
|
||||
curl -LO https://download.qt.io/official_releases/qt/6.9/${QT_VERSION}/single/qt-everywhere-src-${QT_VERSION}.tar.xz; \
|
||||
tar -xf qt-everywhere-src-${QT_VERSION}.tar.xz; \
|
||||
mkdir -p qt-everywhere-src-${QT_VERSION}/build && cd qt-everywhere-src-${QT_VERSION}/build; \
|
||||
cmake -G Ninja \
|
||||
-DQT_BUILD_SUBMODULES="qtbase;qtshadertools;qtdeclarative;qtcharts" \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DQT_BUILD_TESTS=OFF \
|
||||
-DQT_BUILD_EXAMPLES=OFF \
|
||||
-DQT_FEATURE_dbus=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=${QT_PREFIX} \
|
||||
-DCMAKE_C_COMPILER=${CC} \
|
||||
-DCMAKE_CXX_COMPILER=${CXX} \
|
||||
-DQT_FEATURE_openssl=ON \
|
||||
-DQT_FEATURE_openssl_linked=ON \
|
||||
-DOPENSSL_USE_STATIC_LIBS=TRUE \
|
||||
..; \
|
||||
cmake --build . -j"$(nproc)"; \
|
||||
cmake --install .; \
|
||||
cd /; rm -rf /tmp/qt-everywhere-src-${QT_VERSION} /tmp/qt-everywhere-src-${QT_VERSION}.tar.xz
|
||||
|
||||
# Make Qt and Eigen discoverable by CMake
|
||||
ENV CMAKE_PREFIX_PATH=/opt/qt-${QT_VERSION}-static:/opt/eigen
|
||||
|
||||
# Set workdir for your project
|
||||
WORKDIR /workspace
|
||||
|
||||
# Default entrypoint: interactive shell
|
||||
CMD ["/bin/bash", "-l"]
|
||||
133
docker/ubuntu2404/Dockerfile
Normal file
133
docker/ubuntu2404/Dockerfile
Normal file
@@ -0,0 +1,133 @@
|
||||
# Ubuntu 24.04 (Noble) base with CUDA 13 devel toolchain
|
||||
FROM nvidia/cuda:13.0.1-devel-ubuntu24.04
|
||||
LABEL authors="leonarski_f"
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ARG OPENSSL_VERSION=3.3.2
|
||||
ARG QT_VERSION=6.9.0
|
||||
ARG NODE_MAJOR=22
|
||||
ARG EIGEN_TAG=3.4.0
|
||||
|
||||
# Update base and install toolchain + Qt dependencies
|
||||
RUN set -eux; \
|
||||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
curl \
|
||||
wget \
|
||||
git \
|
||||
which \
|
||||
tar \
|
||||
xz-utils \
|
||||
build-essential \
|
||||
cmake \
|
||||
ninja-build \
|
||||
python3 \
|
||||
perl \
|
||||
pkg-config \
|
||||
gdb \
|
||||
file \
|
||||
dpkg-dev \
|
||||
fakeroot \
|
||||
libnuma-dev \
|
||||
libxcb1-dev \
|
||||
libx11-dev \
|
||||
libxext-dev \
|
||||
libxrender-dev \
|
||||
libxi-dev \
|
||||
libxrandr-dev \
|
||||
libxcursor-dev \
|
||||
libxfixes-dev \
|
||||
libxinerama-dev \
|
||||
libxkbcommon-dev \
|
||||
libx11-xcb-dev \
|
||||
libxcb-image0-dev \
|
||||
libxcb-icccm4-dev \
|
||||
libxcb-keysyms1-dev \
|
||||
libxcb-render-util0-dev \
|
||||
libxcb-util-dev \
|
||||
libxcb-randr0-dev \
|
||||
libxcb-xkb-dev \
|
||||
libxcb-shm0-dev \
|
||||
libgl1-mesa-dev \
|
||||
libegl1-mesa-dev \
|
||||
libdbus-1-dev \
|
||||
zlib1g-dev \
|
||||
libglib2.0-dev \
|
||||
libfontconfig1-dev \
|
||||
libfreetype6-dev; \
|
||||
apt-get clean; \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Build a static OpenSSL
|
||||
RUN set -eux; \
|
||||
cd /tmp; \
|
||||
curl -LO https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz; \
|
||||
tar -xf openssl-${OPENSSL_VERSION}.tar.gz; \
|
||||
cd openssl-${OPENSSL_VERSION}; \
|
||||
./Configure linux-x86_64 no-shared no-module no-tests --prefix=/opt/openssl-${OPENSSL_VERSION} --libdir=lib; \
|
||||
make -j"$(nproc)"; \
|
||||
make install_sw; \
|
||||
cd /; rm -rf /tmp/openssl-${OPENSSL_VERSION} /tmp/openssl-${OPENSSL_VERSION}.tar.gz
|
||||
|
||||
# Expose static OpenSSL to CMake/pkg-config
|
||||
ENV OPENSSL_ROOT_DIR=/opt/openssl-${OPENSSL_VERSION}
|
||||
ENV PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig:${OPENSSL_ROOT_DIR}/lib64/pkgconfig:${PKG_CONFIG_PATH}
|
||||
|
||||
# Install Node.js 22 (NodeSource)
|
||||
RUN set -eux; \
|
||||
curl -fsSL https://deb.nodesource.com/setup_${NODE_MAJOR}.x | bash -; \
|
||||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends nodejs; \
|
||||
apt-get clean; \
|
||||
rm -rf /var/lib/apt/lists/*; \
|
||||
node --version; npm --version; (corepack enable || true)
|
||||
|
||||
# Header-only Eigen (specific tag)
|
||||
RUN git clone --depth 1 --branch ${EIGEN_TAG} https://gitlab.com/libeigen/eigen.git /tmp/eigen && \
|
||||
cd /tmp/eigen && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/eigen && \
|
||||
make install && \
|
||||
rm -rf /tmp/eigen
|
||||
|
||||
# Use GCC/G++ 13 for builds (default on Ubuntu 24.04)
|
||||
ENV CC=/usr/bin/gcc
|
||||
ENV CXX=/usr/bin/g++
|
||||
RUN gcc --version && g++ --version
|
||||
|
||||
# Build and install static Qt 6.9 with Core, Gui, Widgets, Charts, DBus
|
||||
ARG QT_PREFIX=/opt/qt-${QT_VERSION}-static
|
||||
RUN set -eux; \
|
||||
cd /tmp; \
|
||||
curl -LO https://download.qt.io/official_releases/qt/6.9/${QT_VERSION}/single/qt-everywhere-src-${QT_VERSION}.tar.xz; \
|
||||
tar -xf qt-everywhere-src-${QT_VERSION}.tar.xz; \
|
||||
mkdir -p qt-everywhere-src-${QT_VERSION}/build && cd qt-everywhere-src-${QT_VERSION}/build; \
|
||||
cmake -G Ninja \
|
||||
-DQT_BUILD_SUBMODULES="qtbase;qtshadertools;qtdeclarative;qtcharts" \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DQT_BUILD_TESTS=OFF \
|
||||
-DQT_BUILD_EXAMPLES=OFF \
|
||||
-DQT_FEATURE_dbus=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=${QT_PREFIX} \
|
||||
-DCMAKE_C_COMPILER=${CC} \
|
||||
-DCMAKE_CXX_COMPILER=${CXX} \
|
||||
-DQT_FEATURE_openssl=ON \
|
||||
-DQT_FEATURE_openssl_linked=ON \
|
||||
-DOPENSSL_USE_STATIC_LIBS=TRUE \
|
||||
..; \
|
||||
cmake --build . -j"$(nproc)"; \
|
||||
cmake --install .; \
|
||||
cd /; rm -rf /tmp/qt-everywhere-src-${QT_VERSION} /tmp/qt-everywhere-src-${QT_VERSION}.tar.xz
|
||||
|
||||
# Make Qt and Eigen discoverable by CMake
|
||||
ENV CMAKE_PREFIX_PATH=/opt/qt-${QT_VERSION}-static:/opt/eigen
|
||||
|
||||
# Set workdir for your project
|
||||
WORKDIR /workspace
|
||||
|
||||
# Default entrypoint: interactive shell
|
||||
CMD ["/bin/bash", "-l"]
|
||||
Reference in New Issue
Block a user