blender/build_files/build_environment/linux/linux_rocky8_setup.sh
Hans Goudey 91803e130f Cleanup: Grammar: Fix uses of "for e.g."
e.g. stands for "exempli gratia" in Latin which means "for example".
The best way to make sure it makes sense when writing is to just expand
it to "for example". In these cases where the text was "for e.g.", that
leaves us with "for for example" which makes no sense. This commit fixes
all 110 cases, mostly just just replacing the words with "for example",
but also restructuring the text a bit more in a few cases, mostly by
moving "e.g." to the beginning of a list in parentheses.

Pull Request: https://projects.blender.org/blender/blender/pulls/139596
2025-05-29 21:21:18 +02:00

227 lines
7.2 KiB
Bash

#!/usr/bin/env bash
# SPDX-FileCopyrightText: 2022-2023 Blender Authors
#
# SPDX-License-Identifier: GPL-2.0-or-later
# This script is part of the official build environment, see wiki page for details.
# https://developer.blender.org/docs/handbook/release_process/build/rocky_8/
set -e
if [ `id -u` -ne 0 ]; then
echo "This script must be run as root"
exit 1
fi
# Required by: config manager command below to enable powertools.
dnf -y install 'dnf-command(config-manager)'
# Packages `ninja-build` and `meson` are not available unless CBR or PowerTools repositories are enabled.
# See: https://wiki.rockylinux.org/rocky/repo/#notes-on-unlisted-repositories
dnf config-manager --set-enabled powertools
# Required by: epel-release has the patchelf and rubygem-asciidoctor packages
dnf -y install epel-release
# `yum-config-manager` does not come in the default minimal install,
# so make sure it is installed and available.
yum -y update
yum -y install yum-utils
# Install all the packages needed for a new tool-chain.
#
# NOTE: Keep this separate from the packages install, since otherwise
# older tool-chain will be installed.
yum -y update
yum -y install scl-utils
yum -y install scl-utils-build
# Currently this is defined by the VFX platform (CY2023), see: https://vfxplatform.com
yum -y install gcc-toolset-11
# Repository for CUDA (`nvcc`).
CUDA_ARCH=$(uname -i)
# For RHEL8 there is no aarch64 repo, instead use sbsa which works for device binaries.
# For RHEL9 there is an aarch64 repo, and this fallback will no longer be needed.
if [ "$CUDA_ARCH" = "aarch64" ]; then
CUDA_ARCH="sbsa"
fi
dnf config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel8/$CUDA_ARCH/cuda-rhel8.repo
# Install packages needed for Blender's dependencies.
PACKAGES_FOR_LIBS=(
# Used to checkout Blender's code.
git
git-lfs
# Used to extract packages.
bzip2
# Used to extract packages.
tar
# Blender and some dependencies use `cmake`.
cmake3
# Apply patches from Blender's: `./build_files/build_environment/patches`
patch
# Use by `cmake` and `autoconf`.
make
# Required by: `external_nasm` which uses an `autoconf` build-system.
autoconf
automake
libtool
# Required by: `external_libsndfile` configure scripts.
autogen
# Used to set rpath on shared libraries
patchelf
# Builds generated by meson use Ninja for the actual build.
ninja-build
# Required by Blender build option: `WITH_GHOST_WAYLAND`.
mesa-libEGL-devel
# Required by: Blender & `external_opensubdiv` (probably others).
mesa-libGL-devel
mesa-libGLU-devel
# NOTE(@ideasman42): Currently flex's `autogen.sh` is required to run because the bundled
# configuration is looking for an older version of `aclocal` than the system provides.
# This is resolved by generating new configuration files which requires the `autopoint`
# command from `gettext-devel`, if the flex package is updated we could remove this.
# Required by: [`flex` running `autogen.sh` for `autopoint`].
gettext-devel
# NOTE(@ideasman42): It seems newer files generated by `autogen.sh` also require `makeinfo`
# and there isn't a flag to disable GNU "info".
# Required by: [`flex` as a build-time dependency for `makeinfo`].
texinfo
# NOTE(@ideasman42): `nvcc` will *not* be added to the `PATH`, must be done manually.
# Commands from:
# https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#environment-setup
# Can be added to `~/.bash_profile`.
# `export LD_LIBRARY_PATH=/usr/local/cuda-12.5/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}`
# `export PATH=/usr/local/cuda-12.5/bin${PATH:+:${PATH}}`
# Required by `external_openimagedenoise` (`nvcc` command)
cuda-toolkit
# Required by: `external_ispc`.
zlib-devel
# TODO: dependencies build without this, consider removal.
rubygem-asciidoctor
# TODO: dependencies build without this, consider removal.
wget
# Required by: `external_sqlite` as a build-time dependency (needed for the `tclsh` command).
tcl
# Required by: `external_aom`.
# TODO: Blender is already building `external_nasm` which is listed as an alternative to `yasm`.
# Why are both needed?
yasm
# NOTE(@ideasman42): while `python39` is available, the default Python version is 3.6.
# For example, this is used for the `python3-mako` package
# So use the "default" system Python since it means it's most compatible with other packages.
python3
# Required by: `external_mesa`.
python3-mako
# Required by: `external_igc`.
python3-pyyaml
# Required by: `external_mesa`.
expat-devel
# Required by: `external_mesa`.
libxshmfence
libxshmfence-devel
# Required by: `external_igc` & `external_osl` as a build-time dependency.
bison
# Required by: `external_osl` as a build-time dependency.
flex
# Required by: `external_ispc`.
ncurses-devel
# Required by: `external_ispc` (when building with CLANG).
libstdc++-static
# Required by: `external_ssl` (build dependencies).
perl-IPC-Cmd
perl-Pod-Html
# Required by: `external_wayland_weston`
cairo-devel
libdrm-devel
pixman-devel
libffi-devel
libinput-devel
libevdev-devel
mesa-libEGL-devel
systemd-devel # for `libudev` (not so obvious!).
# Required by: `weston --headless` (run-time requirement for off screen rendering).
mesa-dri-drivers
mesa-libEGL
mesa-libGL
)
# Additional packages needed for building Blender.
PACKAGES_FOR_BLENDER=(
# Required by Blender build option: `WITH_GHOST_WAYLAND`.
libxkbcommon-devel
# Required by Blender build option: `WITH_GHOST_X11`.
libX11-devel
libXcursor-devel
libXi-devel
libXinerama-devel
libXrandr-devel
libXt-devel
libXxf86vm-devel
)
yum -y install -y ${PACKAGES_FOR_LIBS[@]} ${PACKAGES_FOR_BLENDER[@]}
# Dependencies for pip (needed for `buildbot-worker`), uses Python3.6.
yum -y install python3 python3-pip python3-devel
# Dependencies for asound.
yum -y install -y \
alsa-lib-devel pulseaudio-libs-devel
# Required by Blender build option: `WITH_JACK`.
yum -y install jack-audio-connection-kit-devel
# AMD's ROCM
# Based on instructions from:
# https://rocm.docs.amd.com/projects/install-on-linux/en/latest/how-to/native-install/rhel.html
# NOTE: the following steps have intentionally been skipped as they aren't needed:
# - "Register kernel-mode driver".
# - "Install kernel driver".
# Register ROCm packages
sudo rpm --import https://repo.radeon.com/rocm/rocm.gpg.key
rm -f /etc/yum.repos.d/amdgpu-6.3.1.repo
rm -f /etc/yum.repos.d/rocm-6.3.1.repo
tee --append /etc/yum.repos.d/amdgpu-6.3.1.repo <<EOF
[amdgpu-6.3.1]
name=amdgpu-6.3.1
baseurl=https://repo.radeon.com/amdgpu/6.3.1/el/8.10/main/x86_64/
enabled=1
priority=50
gpgcheck=1
gpgkey=https://repo.radeon.com/rocm/rocm.gpg.key
EOF
tee --append /etc/yum.repos.d/rocm-6.3.1.repo <<EOF
[ROCm-6.3.1]
name=ROCm-6.3.1
baseurl=https://repo.radeon.com/rocm/el8/6.3.1/main
enabled=1
gpgcheck=1
exclude=rock-dkms
gpgkey=https://repo.radeon.com/rocm/rocm.gpg.key
EOF
yum -y update
sudo yum install -y hipcc6.3.1 hip-devel6.3.1 rocm-llvm6.3.1 rocm-core6.3.1 rocm-device-libs6.3.1
sudo update-alternatives --set rocm /opt/rocm-6.3.1