blob: 17e2aa5e4edf56a31ce2608098b580de1785b554 [file] [log] [blame] [edit]
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
FROM ubuntu:22.10
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
fonts-freefont-ttf locales locales-all \
git curl \
doxygen hugo xsltproc \
python3 python3-pip \
gcc libc-dev
ENV LC_ALL "en_US.UTF-8"
ENV LANG "en_US.UTF-8"
ENV LANGUAGE en_US:en
RUN mkdir -p /tools
##############
### nodejs ###
##############
# Install nodejs
ENV NVM_DIR "/tools/.nvm"
ENV PATH "/tools/.nvm/versions/node/v18.7.0/bin:${PATH}"
RUN mkdir /tools/.nvm \
&& curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash \
&& . "/tools/.nvm/nvm.sh" \
&& nvm install v18.7.0
# Install chrome-unstable for puppeteer
RUN curl -so/tmp/chrome.deb https://dl.google.com/linux/direct/google-chrome-unstable_current_amd64.deb \
&& apt-get install -y --no-install-recommends /tmp/chrome.deb
# Create and prepopulate npm and puppeteer caches
ENV PUPPETEER_CACHE_DIR "/tools/.puppeteer"
ENV npm_config_cache "/tools/.npm"
COPY site/earlgrey-diagram/package*.json /tmp/site/earlgrey-diagram/
RUN npm --prefix /tmp/site/earlgrey-diagram/ install
############
### rust ###
############
# Install cargo and mdbook
ENV RUSTUP_HOME "/tools/.rustup"
ENV CARGO_HOME "/tools/.cargo"
ENV PATH "/tools/.cargo/bin:${PATH}"
RUN curl -so- https://sh.rustup.rs | bash -s -- -y \
&& cargo install mdbook
##############
### python ###
##############
# Explicitly updating pip and setuptools is required to have these tools
# properly parse Python-version metadata, which some packages uses to
# specify that an older version of a package must be used for a certain
# Python version. If that information is not read, pip installs the latest
# version, which then fails to run.
COPY python-requirements.txt ./
ENV PATH "/root/.local/bin:${PATH}"
RUN python3 -m pip install -U pip "setuptools<66.0.0" \
&& pip3 install -r python-requirements.txt
# Make /tools accessible to everyone
RUN chmod -R a+rwX /tools
# Cleanup
RUN apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*