From 9dd6ed290ddb48982f56c430ab90000634b39ab5 Mon Sep 17 00:00:00 2001 From: Edoardo Paganoni Date: Mon, 2 Sep 2024 10:39:29 +0000 Subject: [PATCH] Publishes matlab-deps support for MATLAB R2024b. --- .../matlab-deps-r2024a-ubuntu22.04.yml | 2 +- .github/workflows/matlab-deps-r2024b-ubi8.yml | 30 +++++ .github/workflows/matlab-deps-r2024b-ubi9.yml | 30 +++++ .../matlab-deps-r2024b-ubuntu20.04.yml | 30 +++++ .../matlab-deps-r2024b-ubuntu22.04.yml | 30 +++++ matlab-deps/r2024b/aws-batch/Dockerfile | 37 ++++++ .../r2024b/aws-batch/base-dependencies.txt | 60 +++++++++ .../r2024b/aws-batch/stageDataAndRunJob.sh | 122 ++++++++++++++++++ matlab-deps/r2024b/ubi8/Dockerfile | 28 ++++ matlab-deps/r2024b/ubi8/base-dependencies.txt | 48 +++++++ matlab-deps/r2024b/ubi9/Dockerfile | 27 ++++ matlab-deps/r2024b/ubi9/base-dependencies.txt | 51 ++++++++ matlab-deps/r2024b/ubuntu20.04/Dockerfile | 58 +++++++++ .../r2024b/ubuntu20.04/base-dependencies.txt | 55 ++++++++ matlab-deps/r2024b/ubuntu22.04/Dockerfile | 48 +++++++ .../r2024b/ubuntu22.04/base-dependencies.txt | 53 ++++++++ 16 files changed, 708 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/matlab-deps-r2024b-ubi8.yml create mode 100644 .github/workflows/matlab-deps-r2024b-ubi9.yml create mode 100644 .github/workflows/matlab-deps-r2024b-ubuntu20.04.yml create mode 100644 .github/workflows/matlab-deps-r2024b-ubuntu22.04.yml create mode 100644 matlab-deps/r2024b/aws-batch/Dockerfile create mode 100644 matlab-deps/r2024b/aws-batch/base-dependencies.txt create mode 100644 matlab-deps/r2024b/aws-batch/stageDataAndRunJob.sh create mode 100644 matlab-deps/r2024b/ubi8/Dockerfile create mode 100644 matlab-deps/r2024b/ubi8/base-dependencies.txt create mode 100644 matlab-deps/r2024b/ubi9/Dockerfile create mode 100644 matlab-deps/r2024b/ubi9/base-dependencies.txt create mode 100644 matlab-deps/r2024b/ubuntu20.04/Dockerfile create mode 100644 matlab-deps/r2024b/ubuntu20.04/base-dependencies.txt create mode 100644 matlab-deps/r2024b/ubuntu22.04/Dockerfile create mode 100644 matlab-deps/r2024b/ubuntu22.04/base-dependencies.txt diff --git a/.github/workflows/matlab-deps-r2024a-ubuntu22.04.yml b/.github/workflows/matlab-deps-r2024a-ubuntu22.04.yml index 5c1ae17..e189b9d 100644 --- a/.github/workflows/matlab-deps-r2024a-ubuntu22.04.yml +++ b/.github/workflows/matlab-deps-r2024a-ubuntu22.04.yml @@ -27,4 +27,4 @@ jobs: matlab_release_tag: 'r2024a' os_info_tag: 'ubuntu22.04' is_default_os: true - should_add_latest_tag: true \ No newline at end of file + should_add_latest_tag: false \ No newline at end of file diff --git a/.github/workflows/matlab-deps-r2024b-ubi8.yml b/.github/workflows/matlab-deps-r2024b-ubi8.yml new file mode 100644 index 0000000..b69d498 --- /dev/null +++ b/.github/workflows/matlab-deps-r2024b-ubi8.yml @@ -0,0 +1,30 @@ +# Copyright 2024 The MathWorks, Inc. +# Build & Publish matlab-deps/r2024b/ubi8 +name: matlab-deps-r2024b-ubi8 + +# Define when builds will occur: +on: + # Run workflow when there is a push to the 'main' branch & push includes changes to any files in described path + push: + branches: + - 'main' + paths: + - 'matlab-deps/r2024b/ubi8/**' + + # Run at 00:00 on every Monday (1st Day of the Week) (See: crontab.guru) + schedule: + - cron: '0 0 * * 1' + + workflow_dispatch: + +jobs: + build-and-publish-docker-image: + uses: ./.github/workflows/build-and-publish-docker-image.yml + secrets: inherit + with: + docker_build_context: './matlab-deps/r2024b/ubi8' + base_image_name: mathworks/matlab-deps + matlab_release_tag: 'r2024b' + os_info_tag: 'ubi8' + is_default_os: false + should_add_latest_tag: false \ No newline at end of file diff --git a/.github/workflows/matlab-deps-r2024b-ubi9.yml b/.github/workflows/matlab-deps-r2024b-ubi9.yml new file mode 100644 index 0000000..c7e41c1 --- /dev/null +++ b/.github/workflows/matlab-deps-r2024b-ubi9.yml @@ -0,0 +1,30 @@ +# Copyright 2024 The MathWorks, Inc. +# Build & Publish matlab-deps/r2024b/ubi9 +name: matlab-deps-r2024b-ubi9 + +# Define when builds will occur: +on: + # Run workflow when there is a push to the 'main' branch & push includes changes to any files in described path + push: + branches: + - 'main' + paths: + - 'matlab-deps/r2024b/ubi9/**' + + # Run at 00:00 on every Monday (1st Day of the Week) (See: crontab.guru) + schedule: + - cron: '0 0 * * 1' + + workflow_dispatch: + +jobs: + build-and-publish-docker-image: + uses: ./.github/workflows/build-and-publish-docker-image.yml + secrets: inherit + with: + docker_build_context: './matlab-deps/r2024b/ubi9' + base_image_name: mathworks/matlab-deps + matlab_release_tag: 'r2024b' + os_info_tag: 'ubi9' + is_default_os: false + should_add_latest_tag: false \ No newline at end of file diff --git a/.github/workflows/matlab-deps-r2024b-ubuntu20.04.yml b/.github/workflows/matlab-deps-r2024b-ubuntu20.04.yml new file mode 100644 index 0000000..3c36417 --- /dev/null +++ b/.github/workflows/matlab-deps-r2024b-ubuntu20.04.yml @@ -0,0 +1,30 @@ +# Copyright 2024 The MathWorks, Inc. +# Build & Publish matlab-deps/r2024b/ubuntu20.04 +name: matlab-deps-r2024b-ubuntu20.04 + +# Define when builds will occur: +on: + # Run workflow when there is a push to the 'main' branch & push includes changes to any files in described path + push: + branches: + - 'main' + paths: + - 'matlab-deps/r2024b/ubuntu20.04/**' + + # Run at 00:00 on every Monday (1st Day of the Week) (See: crontab.guru) + schedule: + - cron: '0 0 * * 1' + + workflow_dispatch: + +jobs: + build-and-publish-docker-image: + uses: ./.github/workflows/build-and-publish-docker-image.yml + secrets: inherit + with: + docker_build_context: './matlab-deps/r2024b/ubuntu20.04' + base_image_name: mathworks/matlab-deps + matlab_release_tag: 'r2024b' + os_info_tag: 'ubuntu20.04' + is_default_os: false + should_add_latest_tag: false \ No newline at end of file diff --git a/.github/workflows/matlab-deps-r2024b-ubuntu22.04.yml b/.github/workflows/matlab-deps-r2024b-ubuntu22.04.yml new file mode 100644 index 0000000..97cbb20 --- /dev/null +++ b/.github/workflows/matlab-deps-r2024b-ubuntu22.04.yml @@ -0,0 +1,30 @@ +# Copyright 2024 The MathWorks, Inc. +# Build & Publish matlab-deps/r2024b/ubuntu22.04 +name: matlab-deps-r2024b-ubuntu22.04 + +# Define when builds will occur: +on: + # Run workflow when there is a push to the 'main' branch & push includes changes to any files in described path + push: + branches: + - 'main' + paths: + - 'matlab-deps/r2024b/ubuntu22.04/**' + + # Run at 00:00 on every Monday (1st Day of the Week) (See: crontab.guru) + schedule: + - cron: '0 0 * * 1' + + workflow_dispatch: + +jobs: + build-and-publish-docker-image: + uses: ./.github/workflows/build-and-publish-docker-image.yml + secrets: inherit + with: + docker_build_context: './matlab-deps/r2024b/ubuntu22.04' + base_image_name: mathworks/matlab-deps + matlab_release_tag: 'r2024b' + os_info_tag: 'ubuntu22.04' + is_default_os: true + should_add_latest_tag: true \ No newline at end of file diff --git a/matlab-deps/r2024b/aws-batch/Dockerfile b/matlab-deps/r2024b/aws-batch/Dockerfile new file mode 100644 index 0000000..5c57a37 --- /dev/null +++ b/matlab-deps/r2024b/aws-batch/Dockerfile @@ -0,0 +1,37 @@ +# Copyright 2024 The MathWorks, Inc. + +FROM nvidia/cuda:12.2.2-base-ubuntu22.04 + +LABEL maintainer="The MathWorks" + +ENV DEBIAN_FRONTEND="noninteractive" TZ="Etc/UTC" + +# base-dependencies.txt lists libraries required by MATLAB, except for: +# csh - Support MATLAB's Engine API for C and Fortran. See https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html +# gcc, g++, gfortran - Support Simulink code generation and mex with gcc, g++, or gfortran. +# locales, locales-all - Provide extended locales support +# python3, python3-pip - Python and pip are to run/install the AWS CLI. +# unzip, zip - Used to stage input/output data. +COPY base-dependencies.txt /tmp/base-dependencies.txt + +RUN apt-get update && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ + && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* + +WORKDIR / + +# Install the AWS CLI to use for staging input and output data +RUN pip3 install awscli + +# Create directories for the MATLAB install and for the JobStorageLocation +ENV JOB_STORAGE_LOCATION /usr/local/JobStorageLocation +ENV MATLAB_INSTALL_LOCATION /usr/local/matlab +RUN mkdir -p ${MATLAB_INSTALL_LOCATION} ${JOB_STORAGE_LOCATION} +RUN chmod -R +wx ${JOB_STORAGE_LOCATION} + +# To avoid inadvertantly polluting the / directory, use the JobStorageLocation +# while running MATLAB. +WORKDIR ${JOB_STORAGE_LOCATION} + +COPY stageDataAndRunJob.sh /usr/local/stageDataAndRunJob.sh +RUN chmod +x /usr/local/stageDataAndRunJob.sh +ENTRYPOINT ["/usr/local/stageDataAndRunJob.sh"] diff --git a/matlab-deps/r2024b/aws-batch/base-dependencies.txt b/matlab-deps/r2024b/aws-batch/base-dependencies.txt new file mode 100644 index 0000000..eef1abb --- /dev/null +++ b/matlab-deps/r2024b/aws-batch/base-dependencies.txt @@ -0,0 +1,60 @@ +ca-certificates +libasound2 +libatomic1 +libc6 +libcairo-gobject2 +libcairo2 +libcap2 +libcrypt1 +libcups2 +libdrm2 +libfontconfig1 +libfribidi0 +libgbm1 +libgdk-pixbuf-2.0-0 +libgl1 +libglib2.0-0 +libgstreamer-plugins-base1.0-0 +libgstreamer1.0-0 +libgtk-3-0 +libice6 +libltdl7 +libnettle8 +libnspr4 +libnss3 +libpam0g +libpango-1.0-0 +libpangocairo-1.0-0 +libpangoft2-1.0-0 +libpixman-1-0 +libsndfile1 +libtirpc3 +libudev1 +libuuid1 +libwayland-client0 +libxcomposite1 +libxcursor1 +libxdamage1 +libxfixes3 +libxfont2 +libxft2 +libxinerama1 +libxrandr2 +libxt6 +libxtst6 +libxxf86vm1 +locales +locales-all +make +net-tools +procps +sudo +unzip +zlib1g +csh +g++ +gcc +gfortran +python3 +python3-pip +zip diff --git a/matlab-deps/r2024b/aws-batch/stageDataAndRunJob.sh b/matlab-deps/r2024b/aws-batch/stageDataAndRunJob.sh new file mode 100644 index 0000000..96d74dd --- /dev/null +++ b/matlab-deps/r2024b/aws-batch/stageDataAndRunJob.sh @@ -0,0 +1,122 @@ +#!/bin/sh +# +# Makes the file (passed as 1st arg) executable and runs it +# +# This script uses the following environment variables set by the submit MATLAB code: +# PARALLEL_SERVER_S3_BUCKET - The S3 Bucket. +# PARALLEL_SERVER_S3_PREFIX - The prefix under which the job's files are stored in the S3 bucket. +# PARALLEL_SERVER_JOB_LOCATION - The job's storage location. +# PARALLEL_SERVER_TASK_ID_OFFSET - The offset of the Task's ID relative to the value of AWS_BATCH_JOB_ARRAY_INDEX. + +# Copyright 2024 The MathWorks, Inc. + +# The first argument is the path to the job wrapper. +JOB_WRAPPER=${1} + +if [ -n "${AWS_BATCH_JOB_ARRAY_INDEX}" ]; then + # This is an array job. + # The Task ID is equal to AWS_BATCH_JOB_ARRAY_INDEX + PARALLEL_SERVER_TASK_ID_OFFSET. + TASK_ID=`expr ${AWS_BATCH_JOB_ARRAY_INDEX} + ${PARALLEL_SERVER_TASK_ID_OFFSET}` +else + # This is not an array job. + # The Task ID is equal to PARALLEL_SERVER_TASK_ID_OFFSET. + TASK_ID=${PARALLEL_SERVER_TASK_ID_OFFSET} +fi +echo "Task ID is ${TASK_ID}" + +# Export PARALLEL_SERVER_TASK_LOCATION because parallel.cluster.generic.independentDecodeFcn requires it. +export PARALLEL_SERVER_TASK_LOCATION="${PARALLEL_SERVER_JOB_LOCATION}/Task${TASK_ID}"; + +# Determine which input file to copy from S3 for this task. +LIST_INPUT_FILES_CMD="aws s3api list-objects-v2 --bucket ${PARALLEL_SERVER_S3_BUCKET} --prefix ${PARALLEL_SERVER_S3_PREFIX}/stageIn/${PARALLEL_SERVER_JOB_LOCATION}/Task --query 'Contents[].{Key: Key}' --output text" +echo "Listing all the task input files for this MATLAB job using the command ${LIST_INPUT_FILES_CMD}" +LIST_INPUT_FILES_OUTPUT=`eval ${LIST_INPUT_FILES_CMD}` + +LIST_INPUT_FILES_EXIT_CODE=${?} +if [ ${LIST_INPUT_FILES_EXIT_CODE} -ne 0 ] ; then + echo "Listing the task input files failed. Exiting with code ${LIST_INPUT_FILES_EXIT_CODE}" + exit ${LIST_INPUT_FILES_EXIT_CODE} +fi + +GROUPED_TASK_INPUT_FILES=`echo ${LIST_INPUT_FILES_OUTPUT} | grep -e "Task[0-9]\+-[0-9]\+.in.mat" --only-matching` +SINGLE_TASK_INPUT_FILES=`echo ${LIST_INPUT_FILES_OUTPUT} | grep -e "Task[0-9]\+.in.mat" --only-matching` + +for FILE in ${SINGLE_TASK_INPUT_FILES} +do + if [ ${FILE} = "Task${TASK_ID}.in.mat" ] ; then + INPUT_FILE_TO_DOWNLOAD=${FILE} + break + fi +done + +if [ -z ${INPUT_FILE_TO_DOWNLOAD} ] ; then + for FILE in ${GROUPED_TASK_INPUT_FILES} + do + # Extract the start and end ranges + START_RANGE=`echo ${FILE} | grep -e "[0-9]\+" --only-matching | head -n 1` + END_RANGE=`echo ${FILE} | grep -e "[0-9]\+" --only-matching | tail -n 1` + + if [ ${TASK_ID} -ge ${START_RANGE} ] && [ ${TASK_ID} -le ${END_RANGE} ]; then + INPUT_FILE_TO_DOWNLOAD=${FILE} + break + fi + done +fi + +if [ -z ${INPUT_FILE_TO_DOWNLOAD} ] ; then + echo "We could not find an input file for this Task in S3. Exiting with code 1" + exit 1; +fi + +echo "Determined the task input file for this task to be ${INPUT_FILE_TO_DOWNLOAD}." + +# Copy input files from S3 to JobStorageLocation. +JOB_STORAGE_LOCATION="/usr/local/JobStorageLocation" +S3_COPY_CMD="aws s3 cp s3://${PARALLEL_SERVER_S3_BUCKET}/${PARALLEL_SERVER_S3_PREFIX}/stageIn ${JOB_STORAGE_LOCATION}/ \ +--recursive \ +--exclude \"${PARALLEL_SERVER_JOB_LOCATION}/Task*.*\" \ +--include \"${PARALLEL_SERVER_JOB_LOCATION}/${INPUT_FILE_TO_DOWNLOAD}\"" + +echo "Copying files from S3 to JobStorageLocation using command: ${S3_COPY_CMD}" +eval ${S3_COPY_CMD} + +S3_COPY_EXIT_CODE=${?} +if [ ${S3_COPY_EXIT_CODE} -ne 0 ] ; then + echo "Copy of input files from S3 to JobStorageLocation failed. Exiting with code ${S3_COPY_EXIT_CODE}" + exit ${S3_COPY_EXIT_CODE} +fi + +chmod +x ${JOB_WRAPPER} + +echo "Executing the job wrapper script ${JOB_WRAPPER}" +$JOB_WRAPPER + +# Store the exit code from the JobWrapper so we can exit with it later. +JOB_WRAPPER_EXIT_CODE=${?} + +# Zip files up to transfer to S3. +ZIP_CMD="zip -jr ${JOB_STORAGE_LOCATION}/${PARALLEL_SERVER_TASK_LOCATION}.zip ${JOB_STORAGE_LOCATION}/${PARALLEL_SERVER_JOB_LOCATION}/* \ +-x \\*.in.mat \ +-x \\*independentJobWrapper.sh" +echo "Zipping task output files using command: ${ZIP_CMD}" +eval ${ZIP_CMD} + +ZIP_CMD_EXIT_CODE=${?} +if [ ${ZIP_CMD_EXIT_CODE} -ne 0 ] ; then + echo "Zipping task output files failed. Exiting with exit code ${ZIP_CMD_EXIT_CODE}" + exit ${ZIP_CMD_EXIT_CODE} +fi + +# Copy zipped job output files to S3 +S3_COPY_CMD="aws s3 cp ${JOB_STORAGE_LOCATION}/${PARALLEL_SERVER_TASK_LOCATION}.zip s3://${PARALLEL_SERVER_S3_BUCKET}/${PARALLEL_SERVER_S3_PREFIX}/stageOut/${PARALLEL_SERVER_TASK_LOCATION}.zip" +echo "Copying zipped output files from JobStorageLocation to S3 using command: ${S3_COPY_CMD}" +eval ${S3_COPY_CMD} + +S3_COPY_EXIT_CODE=${?} +if [ ${S3_COPY_EXIT_CODE} -ne 0 ] ; then + echo "Copy of output files from JobStorageLocation to S3 failed. Exiting with exit code ${S3_COPY_EXIT_CODE}" + exit ${S3_COPY_EXIT_CODE} +fi + +echo "Exiting with the exit code received from the JobWrapper: ${JOB_WRAPPER_EXIT_CODE}" +exit ${JOB_WRAPPER_EXIT_CODE} diff --git a/matlab-deps/r2024b/ubi8/Dockerfile b/matlab-deps/r2024b/ubi8/Dockerfile new file mode 100644 index 0000000..863ead0 --- /dev/null +++ b/matlab-deps/r2024b/ubi8/Dockerfile @@ -0,0 +1,28 @@ +# Copyright 2024 The MathWorks, Inc. +FROM registry.access.redhat.com/ubi8/ubi:latest + +LABEL maintainer="The MathWorks" + +ENV TZ="Etc/UTC" + +COPY base-dependencies.txt /tmp/base-dependencies.txt + +RUN yum update --disableplugin=subscription-manager -y \ + && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ + && yum --disableplugin=subscription-manager clean all -y + +ENV LANG C +RUN [ -s /etc/machine-id ] || dbus-uuidgen > /etc/machine-id +RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb + +# Uncomment the following RUN yum statement to enable code generation capabilities, +# or if you will be compiling your own mex files with gcc, g++, or gfortran. +# +#RUN yum install -y gcc.x86_64 gcc-c++.x86_64 gcc-gfortran.x86_64 && yum --disableplugin=subscription-manager clean all -y + +# Uncomment the following line if you require the fuse filesystem +#RUN yum install -y fuse-libs.x86_64 && yum --disableplugin=subscription-manager clean all -y + +# Uncomment to resolve certain license manager issues +#RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 + diff --git a/matlab-deps/r2024b/ubi8/base-dependencies.txt b/matlab-deps/r2024b/ubi8/base-dependencies.txt new file mode 100644 index 0000000..975ac05 --- /dev/null +++ b/matlab-deps/r2024b/ubi8/base-dependencies.txt @@ -0,0 +1,48 @@ +alsa-lib.x86_64 +cairo.x86_64 +cairo-gobject.x86_64 +cups-libs.x86_64 +fontconfig.x86_64 +fribidi.x86_64 +gdk-pixbuf2.x86_64 +glib2.x86_64 +glibc.x86_64 +glibc-langpack-en.x86_64 +glibc-locale-source.x86_64 +gtk3.x86_64 +libICE.x86_64 +libXcomposite.x86_64 +libXcursor.x86_64 +libXdamage.x86_64 +libXfixes.x86_64 +libXft.x86_64 +libXinerama.x86_64 +libXrandr.x86_64 +libXt.x86_64 +libXtst.x86_64 +libXxf86vm.x86_64 +libatomic.x86_64 +libcap.x86_64 +libdrm.x86_64 +libglvnd-glx.x86_64 +libsndfile.x86_64 +libtirpc.x86_64 +libtool-ltdl.x86_64 +libuuid.x86_64 +libwayland-client.x86_64 +libxcrypt.x86_64 +make.x86_64 +mesa-libgbm.x86_64 +net-tools.x86_64 +nspr.x86_64 +nss.x86_64 +nss-util.x86_64 +pam.x86_64 +pango.x86_64 +pixman.x86_64 +procps-ng.x86_64 +sudo.x86_64 +systemd-libs.x86_64 +unzip.x86_64 +which.x86_64 +zlib.x86_64 diff --git a/matlab-deps/r2024b/ubi9/Dockerfile b/matlab-deps/r2024b/ubi9/Dockerfile new file mode 100644 index 0000000..bb4b6f2 --- /dev/null +++ b/matlab-deps/r2024b/ubi9/Dockerfile @@ -0,0 +1,27 @@ +# Copyright 2024 The MathWorks, Inc. +FROM registry.access.redhat.com/ubi9/ubi:latest + +LABEL maintainer="The MathWorks" + +ENV TZ="Etc/UTC" + +COPY base-dependencies.txt /tmp/base-dependencies.txt + +RUN yum update --disableplugin=subscription-manager -y \ + && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ + && yum --disableplugin=subscription-manager clean all -y + +ENV LANG C +RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb + +# Uncomment the following RUN yum statement to enable code generation capabilities, +# or if you will be compiling your own mex files with gcc, g++, or gfortran. +# +#RUN yum install -y gcc.x86_64 gcc-c++.x86_64 gcc-gfortran.x86_64 && yum --disableplugin=subscription-manager clean all -y + +# Uncomment the following line if you require the fuse filesystem +#RUN yum install -y fuse-libs.x86_64 && yum --disableplugin=subscription-manager clean all -y + +# Uncomment to resolve certain license manager issues +#RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 + diff --git a/matlab-deps/r2024b/ubi9/base-dependencies.txt b/matlab-deps/r2024b/ubi9/base-dependencies.txt new file mode 100644 index 0000000..6238b74 --- /dev/null +++ b/matlab-deps/r2024b/ubi9/base-dependencies.txt @@ -0,0 +1,51 @@ +alsa-lib.x86_64 +cairo.x86_64 +cairo-gobject.x86_64 +cups-libs.x86_64 +fontconfig.x86_64 +fribidi.x86_64 +gdk-pixbuf2.x86_64 +glib2.x86_64 +glibc.x86_64 +glibc-langpack-en.x86_64 +glibc-locale-source.x86_64 +gstreamer1.x86_64 +gstreamer1-plugins-base.x86_64 +gtk3.x86_64 +libICE.x86_64 +libXcomposite.x86_64 +libXcursor.x86_64 +libXdamage.x86_64 +libXfixes.x86_64 +libXft.x86_64 +libXinerama.x86_64 +libXrandr.x86_64 +libXt.x86_64 +libXtst.x86_64 +libXxf86vm.x86_64 +libatomic.x86_64 +libcap.x86_64 +libdrm.x86_64 +libglvnd-glx.x86_64 +libsndfile.x86_64 +libtirpc.x86_64 +libtool-ltdl.x86_64 +libuuid.x86_64 +libwayland-client.x86_64 +libxcrypt-compat.x86_64 +make.x86_64 +mesa-libgbm.x86_64 +net-tools.x86_64 +nettle.x86_64 +nspr.x86_64 +nss.x86_64 +nss-util.x86_64 +pam.x86_64 +pango.x86_64 +pixman.x86_64 +procps-ng.x86_64 +sudo.x86_64 +systemd-libs.x86_64 +unzip.x86_64 +which.x86_64 +zlib.x86_64 diff --git a/matlab-deps/r2024b/ubuntu20.04/Dockerfile b/matlab-deps/r2024b/ubuntu20.04/Dockerfile new file mode 100644 index 0000000..8fbb303 --- /dev/null +++ b/matlab-deps/r2024b/ubuntu20.04/Dockerfile @@ -0,0 +1,58 @@ +# Copyright 2024 The MathWorks, Inc. +FROM ubuntu:20.04 + +LABEL maintainer="The MathWorks" + +ENV DEBIAN_FRONTEND="noninteractive" TZ="Etc/UTC" + +COPY base-dependencies.txt /tmp/base-dependencies.txt + +RUN apt-get update && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ + && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* + +RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb + +# Install patched glibc - See https://github.com/mathworks/build-glibc-bz-19329-patch +# Note: base-dependencies.txt includes wget, libcrypt-dev and linux-libc-dev to enable installation of patched -dev packages +WORKDIR /packages +RUN export DEBIAN_FRONTEND=noninteractive &&\ + wget -q https://github.com/mathworks/build-glibc-bz-19329-patch/releases/download/ubuntu-focal/all-packages.tar.gz &&\ + tar -x -f all-packages.tar.gz \ + --exclude glibc-*.deb \ + --exclude libc6-dbg*.deb &&\ + apt-get install --yes --no-install-recommends ./*.deb &&\ + rm -fr /packages +WORKDIR / + +# Uncomment the following RUN apt-get statement if you will be using Simulink +# code generation capabilities, or if you will be compiling your own mex files +# with gcc, g++, or gfortran. +# +#RUN apt-get update -y && apt-get install -y gcc g++ gfortran && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* + +# Uncomment the following RUN apt-get statement to enable running a program +# that makes use of MATLAB's Engine API for C and Fortran +# https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html +# +#RUN apt-get update -y && apt-get install -y csh && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* + +# Uncomment ALL of the following RUN apt-get statement to enable the playing of media files +# (mp3, mp4, etc.) from within MATLAB. +# +#RUN apt-get update -y && apt-get install --no-install-recommends -y libgstreamer1.0-0 \ +# gstreamer1.0-tools \ +# gstreamer1.0-libav \ +# gstreamer1.0-plugins-base \ +# gstreamer1.0-plugins-good \ +# gstreamer1.0-plugins-bad \ +# gstreamer1.0-plugins-ugly \ +# && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* + +# Uncomment the following line if you require the fuse filesystem +#RUN apt-get update -y && apt-get install --no-install-recommends -y libfuse2 && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* + +# Uncomment the following line if you require firefox +#RUN apt-get update -y && apt-get install --no-install-recommends -y firefox && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* + +# Uncomment to resolve any license manager issues +#RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 diff --git a/matlab-deps/r2024b/ubuntu20.04/base-dependencies.txt b/matlab-deps/r2024b/ubuntu20.04/base-dependencies.txt new file mode 100644 index 0000000..d24ceee --- /dev/null +++ b/matlab-deps/r2024b/ubuntu20.04/base-dependencies.txt @@ -0,0 +1,55 @@ +ca-certificates +libasound2 +libatomic1 +libc6 +libcairo-gobject2 +libcairo2 +libcap2 +libcrypt1 +libcups2 +libdrm2 +libfontconfig1 +libfribidi0 +libgbm1 +libgdk-pixbuf2.0-0 +libgl1 +libglib2.0-0 +libgstreamer-plugins-base1.0-0 +libgstreamer1.0-0 +libgtk-3-0 +libice6 +libltdl7 +libnspr4 +libnss3 +libpam0g +libpango-1.0-0 +libpangocairo-1.0-0 +libpangoft2-1.0-0 +libpixman-1-0 +libsndfile1 +libtirpc3 +libudev1 +libuuid1 +libwayland-client0 +libxcomposite1 +libxcursor1 +libxdamage1 +libxfixes3 +libxfont2 +libxft2 +libxinerama1 +libxrandr2 +libxt6 +libxtst6 +libxxf86vm1 +locales +locales-all +make +net-tools +procps +sudo +unzip +zlib1g +wget +libcrypt-dev +linux-libc-dev diff --git a/matlab-deps/r2024b/ubuntu22.04/Dockerfile b/matlab-deps/r2024b/ubuntu22.04/Dockerfile new file mode 100644 index 0000000..584f790 --- /dev/null +++ b/matlab-deps/r2024b/ubuntu22.04/Dockerfile @@ -0,0 +1,48 @@ +# Copyright 2024 The MathWorks, Inc. +FROM ubuntu:22.04 + +LABEL maintainer="The MathWorks" + +ENV DEBIAN_FRONTEND="noninteractive" TZ="Etc/UTC" + +COPY base-dependencies.txt /tmp/base-dependencies.txt + +RUN apt-get update && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ + && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* + +RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb + +WORKDIR / + +# Uncomment the following RUN apt-get statement if you will be using Simulink +# code generation capabilities, or if you will be compiling your own mex files +# with gcc, g++, or gfortran. +# +#RUN apt-get update -y && apt-get install -y gcc g++ gfortran && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* + +# Uncomment the following RUN apt-get statement to enable running a program +# that makes use of MATLAB's Engine API for C and Fortran +# https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html +# +#RUN apt-get update -y && apt-get install -y csh && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* + +# Uncomment ALL of the following RUN apt-get statement to enable the playing of media files +# (mp3, mp4, etc.) from within MATLAB. +# +#RUN apt-get update -y && apt-get install --no-install-recommends -y libgstreamer1.0-0 \ +# gstreamer1.0-tools \ +# gstreamer1.0-libav \ +# gstreamer1.0-plugins-base \ +# gstreamer1.0-plugins-good \ +# gstreamer1.0-plugins-bad \ +# gstreamer1.0-plugins-ugly \ +# && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* + +# Uncomment the following line if you require the fuse filesystem +#RUN apt-get update -y && apt-get install --no-install-recommends -y libfuse2 && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* + +# Uncomment the following line if you require firefox +#RUN apt-get update -y && apt-get install --no-install-recommends -y firefox && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* + +# Uncomment to resolve any license manager issues +#RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 diff --git a/matlab-deps/r2024b/ubuntu22.04/base-dependencies.txt b/matlab-deps/r2024b/ubuntu22.04/base-dependencies.txt new file mode 100644 index 0000000..49dd8f6 --- /dev/null +++ b/matlab-deps/r2024b/ubuntu22.04/base-dependencies.txt @@ -0,0 +1,53 @@ +ca-certificates +libasound2 +libatomic1 +libc6 +libcairo-gobject2 +libcairo2 +libcap2 +libcrypt1 +libcups2 +libdrm2 +libfontconfig1 +libfribidi0 +libgbm1 +libgdk-pixbuf-2.0-0 +libgl1 +libglib2.0-0 +libgstreamer-plugins-base1.0-0 +libgstreamer1.0-0 +libgtk-3-0 +libice6 +libltdl7 +libnettle8 +libnspr4 +libnss3 +libpam0g +libpango-1.0-0 +libpangocairo-1.0-0 +libpangoft2-1.0-0 +libpixman-1-0 +libsndfile1 +libtirpc3 +libudev1 +libuuid1 +libwayland-client0 +libxcomposite1 +libxcursor1 +libxdamage1 +libxfixes3 +libxfont2 +libxft2 +libxinerama1 +libxrandr2 +libxt6 +libxtst6 +libxxf86vm1 +locales +locales-all +make +net-tools +procps +sudo +unzip +zlib1g