| # 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/* |