From f99385cdd170432e1799b07626d3edf3be7c428e Mon Sep 17 00:00:00 2001 From: "Philipp v. K" Date: Wed, 7 Sep 2022 14:46:12 +0200 Subject: [PATCH 1/6] Remove CSI-NN from ci_cortexm docker image --- docker/Dockerfile.ci_cortexm | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docker/Dockerfile.ci_cortexm b/docker/Dockerfile.ci_cortexm index 63089f3d65f2..851a3c520e3a 100644 --- a/docker/Dockerfile.ci_cortexm +++ b/docker/Dockerfile.ci_cortexm @@ -110,11 +110,5 @@ RUN bash /install/ubuntu_install_ethosu_driver_stack.sh COPY install/ubuntu_install_vela.sh /install/ubuntu_install_vela.sh RUN bash /install/ubuntu_install_vela.sh -#Install CSI-NN2 -COPY install/ubuntu_download_csinn2_compute_lib.sh /install/ubuntu_download_csinn2_compute_lib.sh -RUN bash /install/ubuntu_download_csinn2_compute_lib.sh - # Update PATH ENV PATH /opt/arm/gcc-arm-none-eabi/bin:/opt/arm/FVP_Corstone_SSE-300/models/Linux64_GCC-6.4:$PATH -ENV PATH /opt/csi-nn2/tools/gcc-toolchain/bin:$PATH -ENV PATH /opt/csi-nn2/tools/qemu/bin:$PATH From f13a37f02d82879d0dd75d6fd4b9e66ca7da0480 Mon Sep 17 00:00:00 2001 From: "Philipp v. K" Date: Wed, 7 Sep 2022 14:49:18 +0200 Subject: [PATCH 2/6] [Docker] [RISC-V] Split up CSI-NN2 installation script into several files [Docker] [RISC-V] move gcc toolchain installation out of csi-nn2 script [Docker] [RISC-V] move qemu installation out of csi-nn2 script --- docker/Dockerfile.ci_riscv | 14 ++++- .../ubuntu_download_csinn2_compute_lib.sh | 20 ++++--- .../ubuntu_download_xuantie_gcc_linux.sh | 57 +++++++++++++++++++ .../install/ubuntu_download_xuantie_qemu.sh | 56 ++++++++++++++++++ 4 files changed, 135 insertions(+), 12 deletions(-) create mode 100755 docker/install/ubuntu_download_xuantie_gcc_linux.sh create mode 100755 docker/install/ubuntu_download_xuantie_qemu.sh diff --git a/docker/Dockerfile.ci_riscv b/docker/Dockerfile.ci_riscv index b65b87a86386..93c6dbf251b2 100644 --- a/docker/Dockerfile.ci_riscv +++ b/docker/Dockerfile.ci_riscv @@ -84,10 +84,18 @@ COPY install/ubuntu_install_zephyr_sdk.sh /install/ubuntu_install_zephyr_sdk.sh RUN bash /install/ubuntu_install_zephyr.sh ENV ZEPHYR_BASE=/opt/zephyrproject/zephyr -#Install CSI-NN2 +# Download RISC-V gcc toolchain (linux) +COPY install/ubuntu_download_xuantie_gcc_linux.sh /install/ubuntu_download_xuantie_gcc_linux.sh +RUN bash /install/ubuntu_download_xuantie_gcc_linux.sh /opt/riscv/riscv64-unknown-linux-gnu + +# Install RISC-V QEMU +COPY install/ubuntu_download_xuantie_qemu.sh /install/ubuntu_download_xuantie_qemu.sh +RUN bash /install/ubuntu_download_xuantie_qemu.sh /opt/riscv/qemu/ + +# Install CSI-NN2 COPY install/ubuntu_download_csinn2_compute_lib.sh /install/ubuntu_download_csinn2_compute_lib.sh RUN bash /install/ubuntu_download_csinn2_compute_lib.sh # Update PATH -ENV PATH /opt/csi-nn2/tools/gcc-toolchain/bin:$PATH -ENV PATH /opt/csi-nn2/tools/qemu/bin:$PATH +ENV PATH /opt/riscv/riscv64-unknown-linux-gnu/bin:$PATH +ENV PATH /opt/riscv/qemu/bin:$PATH diff --git a/docker/install/ubuntu_download_csinn2_compute_lib.sh b/docker/install/ubuntu_download_csinn2_compute_lib.sh index 568ee4146084..4e483d173cbd 100755 --- a/docker/install/ubuntu_download_csinn2_compute_lib.sh +++ b/docker/install/ubuntu_download_csinn2_compute_lib.sh @@ -23,19 +23,21 @@ install_path="/opt/csi-nn2" # Clone CSI-NN2 Compute Library source code git clone --depth 1 --branch 1.12.2 https://github.com/T-head-Semi/csi-nn2.git ${install_path} -# download cross-compiler when not building natively. -# riscv gcc toolchain will be downloaded to "/path/csi-nn2/tools/gcc-toolchain". +# The toolchain is downloaded in: ubuntu_download_xuantie_gcc_linux.sh cd ${install_path} -./script/download_toolchain.sh - -# download custom QEMU to "/path/csi-nn2/tools/qemu". -./script/download_qemu.sh # build csinn2 lib for x86 and c906 # lib will be installed in /path/csi-nn2/install + # for x86 -make -j4; cd x86_build; make install; cd - +make -j4 +cd x86_build +make install +cd - + # for c906 mkdir -p riscv_build; cd riscv_build -cmake ../ -DBUILD_RISCV=ON; make -j4; make install; cd - - +export RISCV_GNU_GCC_PATH=/opt/riscv/riscv64-unknown-linux-gnu/bin +cmake ../ -DBUILD_RISCV=ON +make -j4 +make install; cd - diff --git a/docker/install/ubuntu_download_xuantie_gcc_linux.sh b/docker/install/ubuntu_download_xuantie_gcc_linux.sh new file mode 100755 index 000000000000..ab782b979785 --- /dev/null +++ b/docker/install/ubuntu_download_xuantie_gcc_linux.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +ubuntu_install_spike_sim.sh + +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +set -e +set -u +set -o pipefail + +function show_usage() { + cat < +INSTALLATION_PATH is the installation path for the toolchain. +EOF +} + +if [ "$#" -lt 1 -o "$1" == "--help" -o "$1" == "-h" ]; then + show_usage + exit 1 +fi + +INSTALLATION_PATH=$1 +shift + +# Create installation path directory +mkdir -p "${INSTALLATION_PATH}" + +# Download and extract RISC-V gcc +RISCV_GCC_VERSION="2.6.0" +RISCV_GCC_ID="1659325511536" +RISCV_GCC_KERNEL_VERSION="5.10.4" +RISCV_GCC_DATE="20220715" +RISCV_GCC_ARCH="x86_64" +RISCV_GCC_BASE="Xuantie-900-gcc-linux-${RISCV_GCC_KERNEL_VERSION}-glibc-${RISCV_GCC_ARCH}-V${RISCV_GCC_VERSION}-${RISCV_GCC_DATE}" +RISCV_GCC_EXT="tar.gz" +RISCV_GCC_URL="https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//${RISCV_GCC_ID}/${RISCV_GCC_BASE}.${RISCV_GCC_EXT}" +DOWNLOAD_PATH="/tmp/${RISCV_GCC_BASE}.${RISCV_GCC_EXT}" + +wget ${RISCV_GCC_URL} -O "${DOWNLOAD_PATH}" +tar -xf "${DOWNLOAD_PATH}" -C "${INSTALLATION_PATH}" --strip-components=1 +rm $DOWNLOAD_PATH +echo "SUCCESS" diff --git a/docker/install/ubuntu_download_xuantie_qemu.sh b/docker/install/ubuntu_download_xuantie_qemu.sh new file mode 100755 index 000000000000..f8a3e0e73b68 --- /dev/null +++ b/docker/install/ubuntu_download_xuantie_qemu.sh @@ -0,0 +1,56 @@ +#!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +set -e +set -u +set -o pipefail + +function show_usage() { + cat < +INSTALLATION_PATH is the installation path for the tool. +EOF +} + +if [ "$#" -lt 1 -o "$1" == "--help" -o "$1" == "-h" ]; then + show_usage + exit 1 +fi + +INSTALLATION_PATH=$1 + +# Create installation path directory +mkdir -p "${INSTALLATION_PATH}" + +QEMU_RELEASE="1.12" +QEMU_DATE="20220402-0353" +QEMU_ARCH="x86_64-Ubuntu-18.04" +QEMU_BASE="xuantie-qemu-${QEMU_ARCH}-${QEMU_DATE}" +QEMU_EXT="tar.gz" +QEMU_URL="https://github.com/T-head-Semi/csi-nn2/releases/download/v${QEMU_RELEASE}/${QEMU_BASE}.${QEMU_EXT}" +DOWNLOAD_PATH="/tmp/${QEMU_BASE}.${QEMU_EXT}" + +wget ${QEMU_URL} -O "${DOWNLOAD_PATH}" +tar -xf "${DOWNLOAD_PATH}" -C "${INSTALLATION_PATH}" --strip-components=1 +rm $DOWNLOAD_PATH + +# Remove non riscv64 binaries? (TODO) +# ls $INSTALLATION_PATH/bin | grep -v qemu-riscv64 | xargs -i rm -rf $INSTALLATION_PATH/bin/{} +# ls $INSTALLATION_PATH | grep -v bin | xargs -i rm -rf $INSTALLATION_PATH/{} + +echo "SUCCESS" From 828aac1100334d24db8966f8c9be588dae6cde77 Mon Sep 17 00:00:00 2001 From: "Philipp v. K" Date: Fri, 9 Sep 2022 14:15:34 +0200 Subject: [PATCH 3/6] use updated version of qemu --- docker/install/ubuntu_download_xuantie_qemu.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker/install/ubuntu_download_xuantie_qemu.sh b/docker/install/ubuntu_download_xuantie_qemu.sh index f8a3e0e73b68..56f0f3d0a34f 100755 --- a/docker/install/ubuntu_download_xuantie_qemu.sh +++ b/docker/install/ubuntu_download_xuantie_qemu.sh @@ -37,12 +37,12 @@ INSTALLATION_PATH=$1 # Create installation path directory mkdir -p "${INSTALLATION_PATH}" -QEMU_RELEASE="1.12" -QEMU_DATE="20220402-0353" +QEMU_DATE="20220623-0307" +QEMU_SOURCE_ID="1655972947885" QEMU_ARCH="x86_64-Ubuntu-18.04" QEMU_BASE="xuantie-qemu-${QEMU_ARCH}-${QEMU_DATE}" QEMU_EXT="tar.gz" -QEMU_URL="https://github.com/T-head-Semi/csi-nn2/releases/download/v${QEMU_RELEASE}/${QEMU_BASE}.${QEMU_EXT}" +QEMU_URL="https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//${QEMU_SOURCE_ID}/${QEMU_BASE}.${QEMU_EXT}" DOWNLOAD_PATH="/tmp/${QEMU_BASE}.${QEMU_EXT}" wget ${QEMU_URL} -O "${DOWNLOAD_PATH}" From 589d809cfd7dc09cbf5f019a3a9ca55d33bc0265 Mon Sep 17 00:00:00 2001 From: "Philipp v. K" Date: Wed, 7 Sep 2022 14:50:06 +0200 Subject: [PATCH 4/6] [Docker] [RISC-V] Install newlib (baremetal) gcc toolchain --- docker/Dockerfile.ci_riscv | 5 ++ .../ubuntu_download_xuantie_gcc_newlib.sh | 57 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100755 docker/install/ubuntu_download_xuantie_gcc_newlib.sh diff --git a/docker/Dockerfile.ci_riscv b/docker/Dockerfile.ci_riscv index 93c6dbf251b2..e6ad9f9c4afd 100644 --- a/docker/Dockerfile.ci_riscv +++ b/docker/Dockerfile.ci_riscv @@ -88,6 +88,10 @@ ENV ZEPHYR_BASE=/opt/zephyrproject/zephyr COPY install/ubuntu_download_xuantie_gcc_linux.sh /install/ubuntu_download_xuantie_gcc_linux.sh RUN bash /install/ubuntu_download_xuantie_gcc_linux.sh /opt/riscv/riscv64-unknown-linux-gnu +# Download RISC-V gcc toolchain (baremetal) +COPY install/ubuntu_download_xuantie_gcc_newlib.sh /install/ubuntu_download_xuantie_gcc_newlib.sh +RUN bash /install/ubuntu_download_xuantie_gcc_newlib.sh /opt/riscv/riscv64-unknown-elf + # Install RISC-V QEMU COPY install/ubuntu_download_xuantie_qemu.sh /install/ubuntu_download_xuantie_qemu.sh RUN bash /install/ubuntu_download_xuantie_qemu.sh /opt/riscv/qemu/ @@ -98,4 +102,5 @@ RUN bash /install/ubuntu_download_csinn2_compute_lib.sh # Update PATH ENV PATH /opt/riscv/riscv64-unknown-linux-gnu/bin:$PATH +ENV PATH /opt/riscv/riscv64-unknown-elf/bin:$PATH ENV PATH /opt/riscv/qemu/bin:$PATH diff --git a/docker/install/ubuntu_download_xuantie_gcc_newlib.sh b/docker/install/ubuntu_download_xuantie_gcc_newlib.sh new file mode 100755 index 000000000000..203bc1a2f076 --- /dev/null +++ b/docker/install/ubuntu_download_xuantie_gcc_newlib.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +ubuntu_install_spike_sim.sh + +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +set -e +set -u +set -o pipefail + +function show_usage() { + cat < +INSTALLATION_PATH is the installation path for the toolchain. +EOF +} + +if [ "$#" -lt 1 -o "$1" == "--help" -o "$1" == "-h" ]; then + show_usage + exit 1 +fi + +INSTALLATION_PATH=$1 +shift + +# Create installation path directory +mkdir -p "${INSTALLATION_PATH}" + +# Download and extract RISC-V gcc +RISCV_GCC_VERSION="2.6.0" +RISCV_GCC_ID="1659318201401" +RISCV_GCC_DATE="20220715" +RISCV_GCC_ARCH="x86_64" +RISCV_GCC_BASE="Xuantie-900-gcc-elf-newlib-${RISCV_GCC_ARCH}-V${RISCV_GCC_VERSION}-${RISCV_GCC_DATE}" +RISCV_GCC_EXT="tar.gz" +# extra forward slash is required somehow +RISCV_GCC_URL="https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//${RISCV_GCC_ID}/${RISCV_GCC_BASE}.${RISCV_GCC_EXT}" +DOWNLOAD_PATH="/tmp/${RISCV_GCC_BASE}.${RISCV_GCC_EXT}" + +wget ${RISCV_GCC_URL} -O "${DOWNLOAD_PATH}" +tar -xf "${DOWNLOAD_PATH}" -C "${INSTALLATION_PATH}" --strip-components=1 +rm $DOWNLOAD_PATH +echo "SUCCESS" From 0b2b2b45b5883cea3c3070232ffc0c581205f67b Mon Sep 17 00:00:00 2001 From: "Philipp v. K" Date: Wed, 7 Sep 2022 14:50:46 +0200 Subject: [PATCH 5/6] [Docker] [RISC-V] Install spike simulator --- docker/Dockerfile.ci_riscv | 5 ++ docker/install/ubuntu_install_spike_sim.sh | 86 ++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100755 docker/install/ubuntu_install_spike_sim.sh diff --git a/docker/Dockerfile.ci_riscv b/docker/Dockerfile.ci_riscv index e6ad9f9c4afd..12076a73da57 100644 --- a/docker/Dockerfile.ci_riscv +++ b/docker/Dockerfile.ci_riscv @@ -100,7 +100,12 @@ RUN bash /install/ubuntu_download_xuantie_qemu.sh /opt/riscv/qemu/ COPY install/ubuntu_download_csinn2_compute_lib.sh /install/ubuntu_download_csinn2_compute_lib.sh RUN bash /install/ubuntu_download_csinn2_compute_lib.sh +# Build spike (riscv-isa-sim) and proxy kernel (pk) +COPY install/ubuntu_install_spike_sim.sh /install/ubuntu_install_spike_sim.sh +RUN bash /install/ubuntu_install_spike_sim.sh /opt/riscv/riscv64-unknown-elf/ + # Update PATH ENV PATH /opt/riscv/riscv64-unknown-linux-gnu/bin:$PATH ENV PATH /opt/riscv/riscv64-unknown-elf/bin:$PATH ENV PATH /opt/riscv/qemu/bin:$PATH +ENV PATH /opt/riscv/spike/bin:$PATH diff --git a/docker/install/ubuntu_install_spike_sim.sh b/docker/install/ubuntu_install_spike_sim.sh new file mode 100755 index 000000000000..39a6824513c1 --- /dev/null +++ b/docker/install/ubuntu_install_spike_sim.sh @@ -0,0 +1,86 @@ +#!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +ubuntu_install_spike_sim.sh + +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +set -e +set -u +set -o pipefail +set -x + +function show_usage() { + cat < +RISCV_PATH is the installation path of the risc-v gcc. +EOF +} + +if [ "$#" -lt 1 -o "$1" == "--help" -o "$1" == "-h" ]; then + show_usage + exit -1 +fi + +export RISCV=$1 +export PATH=$RISCV/bin:$PATH +shift + +export DEBIAN_FRONTEND=noninteractive +export TZ=Etc/UTC +sudo ln -snf /usr/share/zoneinfo/$TZ /etc/localtime +echo $TZ > /etc/timezone + +sudo apt-install-and-clear -y --no-install-recommends device-tree-compiler + +# Install spike +mkdir /tmp/spike +cd /tmp/spike +# TODO: freeze version? +git clone https://github.com/riscv/riscv-isa-sim.git +pushd riscv-isa-sim +mkdir build +cd build +../configure --prefix=$RISCV --with-isa=RV32IMAC +make -j`nproc` +make install +popd + +# Install pk +git clone https://github.com/riscv/riscv-pk.git +pushd riscv-pk + +# rv32imac +mkdir build +pushd build +../configure --prefix=`pwd`/install --host=riscv64-unknown-elf --with-arch=rv32imac +make -j`nproc` +make install +cp ./pk $RISCV/riscv64-unknown-elf/bin/pk +popd + +git status + +# rv64imac +mkdir build64 +pushd build64 +../configure --prefix=`pwd`/install --host=riscv64-unknown-elf --with-arch=rv64imac +make -j`nproc` +make install +cp ./pk $RISCV/riscv64-unknown-elf/bin/pk64 + +# cleanup +rm -rf /tmp/spike From f17e2b4b7e15cabb4b35cc016559acbf9cd48413 Mon Sep 17 00:00:00 2001 From: Philipp van Kempen Date: Fri, 9 Sep 2022 02:18:03 +0200 Subject: [PATCH 6/6] [Docker] move initialization of timezone and DEBIAN_FRONTEND to ubuntu_install_core.sh script --- docker/install/ubuntu_install_arduino.sh | 1 - docker/install/ubuntu_install_core.sh | 5 +++++ docker/install/ubuntu_install_spike_sim.sh | 5 ----- docker/install/ubuntu_install_zephyr.sh | 5 ----- 4 files changed, 5 insertions(+), 11 deletions(-) diff --git a/docker/install/ubuntu_install_arduino.sh b/docker/install/ubuntu_install_arduino.sh index 107b452f8d3f..15dbd20fa758 100755 --- a/docker/install/ubuntu_install_arduino.sh +++ b/docker/install/ubuntu_install_arduino.sh @@ -20,7 +20,6 @@ set -e set -u set -o pipefail -export DEBIAN_FRONTEND=noninteractive apt-install-and-clear -y ca-certificates ARDUINO_CLI_VERSION="0.21.1" diff --git a/docker/install/ubuntu_install_core.sh b/docker/install/ubuntu_install_core.sh index d20eeeba6998..a27c45433115 100755 --- a/docker/install/ubuntu_install_core.sh +++ b/docker/install/ubuntu_install_core.sh @@ -22,6 +22,11 @@ set -u set -x set -o pipefail +export DEBIAN_FRONTEND=noninteractive +export TZ=Etc/UTC +ln -snf /usr/share/zoneinfo/$TZ /etc/localtime +echo $TZ > /etc/timezone + # install libraries for building c++ core on ubuntu apt-get update && apt-install-and-clear -y --no-install-recommends \ apt-transport-https \ diff --git a/docker/install/ubuntu_install_spike_sim.sh b/docker/install/ubuntu_install_spike_sim.sh index 39a6824513c1..24a11d758c38 100755 --- a/docker/install/ubuntu_install_spike_sim.sh +++ b/docker/install/ubuntu_install_spike_sim.sh @@ -39,11 +39,6 @@ export RISCV=$1 export PATH=$RISCV/bin:$PATH shift -export DEBIAN_FRONTEND=noninteractive -export TZ=Etc/UTC -sudo ln -snf /usr/share/zoneinfo/$TZ /etc/localtime -echo $TZ > /etc/timezone - sudo apt-install-and-clear -y --no-install-recommends device-tree-compiler # Install spike diff --git a/docker/install/ubuntu_install_zephyr.sh b/docker/install/ubuntu_install_zephyr.sh index d25027f00709..fe2b1fc742ed 100755 --- a/docker/install/ubuntu_install_zephyr.sh +++ b/docker/install/ubuntu_install_zephyr.sh @@ -21,11 +21,6 @@ set -u set -o pipefail set -x -export DEBIAN_FRONTEND=noninteractive -export TZ=Etc/UTC -sudo ln -snf /usr/share/zoneinfo/$TZ /etc/localtime -echo $TZ > /etc/timezone - sudo apt-install-and-clear -y --no-install-recommends \ libsdl2-dev ca-certificates gnupg software-properties-common wget \ git cmake ninja-build gperf \