diff --git a/docker/.bash_aliases b/docker/.bash_aliases deleted file mode 100644 index 732bcf9b4..000000000 --- a/docker/.bash_aliases +++ /dev/null @@ -1,3 +0,0 @@ -# Hijack this file to set this PS1, visually indicating to the user that we are running the docker container - -PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[1;35m\]<$IMAGE_NAME>\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ " diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100755 index d9bb26e02..000000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -# Configuration file to setup the Docker container of Redox - -FROM rustlang/rust:nightly - -ENV IMAGE_NAME=redox-os-docker - -RUN set -ex; \ - apt-get update; \ - apt-get install -q -y --no-install-recommends \ - apt-transport-https \ - bison \ - flex \ - fuse \ - gosu \ - libfuse-dev \ - nasm \ - qemu-utils \ - sudo \ - texinfo \ - autopoint \ - git \ - cmake \ - gperf \ - libhtml-parser-perl \ - ; \ - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AA12E97F0881517F; \ - echo "deb https://static.redox-os.org/toolchain/apt/ /" >> \ - /etc/apt/sources.list.d/redox.list; \ - apt-get update -o Dir::Etc::sourcelist="redox.list"; \ - apt-get install -q -y --no-install-recommends \ - x86-64-unknown-redox-newlib \ - x86-64-unknown-redox-binutils \ - x86-64-unknown-redox-gcc \ - ; \ - cargo install cargo-config; \ - cargo install just@1.16.0; \ - apt-get autoremove -q -y; \ - apt-get clean -q -y; \ - rm -rf /var/lib/apt/lists/* - -COPY entrypoint.sh /usr/local/bin/ -COPY .bash_aliases /etc/skel/ - -ENTRYPOINT ["bash", "/usr/local/bin/entrypoint.sh"] -CMD ["/bin/bash"] diff --git a/docker/README.md b/docker/README.md deleted file mode 100644 index 1535e2d95..000000000 --- a/docker/README.md +++ /dev/null @@ -1,85 +0,0 @@ -## Building Redox using a Docker image with the pre-built toolchain - -*All you need is `git`, `make`, `qemu`, `fuse` and `docker`. The method requires -a non-privileged user able to run the `docker` command, which is usually achieved -by adding the user to the `docker` group.* - -It's a three-steps process with variations depending on the platform. -On the first execution of one of the following docker commands, the -official container image will be pulled from dockerhub and stored -locally. - -The image includes the required dependencies and the pre-built -toolchain. As long as you rely on this particular dependencies and -toolchain versions, you don't need to update the container. - -### Get the sources -``` -git clone https://gitlab.redox-os.org/redox-os/redox.git ; cd redox -``` - -### Update the source tree -Note: if you use the container on a different host or -with a different user, [get the sources first](#get_the_sources). -```shell -git pull --rebase --recurse-submodules && git submodule sync \ - && git submodule update --recursive --init -``` - -### Run the container to build Redox -```shell -docker run --privileged --cap-add MKNOD --cap-add SYS_ADMIN --device /dev/fuse \ - -e LOCAL_UID="$(id -u)" -e LOCAL_GID="$(id -g)" \ - -v redox-"$(id -u)-$(id -g)"-cargo:/usr/local/cargo \ - -v redox-"$(id -u)-$(id -g)"-rustup:/usr/local/rustup \ - -v "$(pwd):$(pwd)" -w "$(pwd)" --rm redoxos/redox make fetch all -``` -#### Linux with security modules -Add the following options depending on the security modules activated on your system: -```shell ---security-opt label=disable // disable SELinux ---security-opt seccomp=unconfined // disable seccomp ---security-opt apparmor=unconfined // disable AppArmor -``` -Ex.: for a SELinux only system such as Fedora or CentOS -```shell -docker run --privileged --cap-add MKNOD --cap-add SYS_ADMIN --device /dev/fuse \ - -e LOCAL_UID="$(id -u)" -e LOCAL_GID="$(id -g)" \ - --security-opt label=disable \ - -v redox-"$(id -u)-$(id -g)"-cargo:/usr/local/cargo \ - -v redox-"$(id -u)-$(id -g)"-rustup:/usr/local/rustup \ - -v "$(pwd):$(pwd)" -w "$(pwd)" --rm redoxos/redox make fetch all -``` -### Run the container interactively -```shell -docker run --privileged --cap-add MKNOD --cap-add SYS_ADMIN --device /dev/fuse \ - -e LOCAL_UID="$(id -u)" -e LOCAL_GID="$(id -g)" \ - -v redox-"$(id -u)-$(id -g)"-cargo:/usr/local/cargo \ - -v redox-"$(id -u)-$(id -g)"-rustup:/usr/local/rustup \ - -v "$(pwd):$(pwd)" -w "$(pwd)" --rm -it redoxos/redox -``` - -#### Demo -![Image of Usage](demo.gif) - -### Clear the named volumes containing the toolchain caches -```shell -docker volume rm redox-"$(id -u)-$(id -g)"-cargo \ - redox-"$(id -u)-$(id -g)"-rustup -``` - -### Build the container manually -If you cannot access dockerhub for whatever reason, you can also build -the container image manually. -```shell -docker build -t redoxos/redox docker/ -``` - -### Troubleshooting / updating -Sometimes, builds may fail because the nightly toolchain of rust inside the container got out of sync with dependencies of redox, or there are issues with cargo. In this case, it might help to update your current container image and delete the rust and cargo caches. This way, you can start over from a clean state and rule out your local setup as the origin of errors. - -```shell -docker pull redoxos/redox -docker volume rm redox-"$(id -u)-$(id -g)"-cargo \ - redox-"$(id -u)-$(id -g)"-rustup -``` diff --git a/docker/demo.gif b/docker/demo.gif deleted file mode 100644 index 695a225a8..000000000 Binary files a/docker/demo.gif and /dev/null differ diff --git a/docker/docker.sh b/docker/docker.sh deleted file mode 100755 index 63bc5ddca..000000000 --- a/docker/docker.sh +++ /dev/null @@ -1,7 +0,0 @@ -# This script run the Docker image of Redox - -docker run --privileged --cap-add MKNOD --cap-add SYS_ADMIN --device /dev/fuse \ - -e LOCAL_UID="$(id -u)" -e LOCAL_GID="$(id -g)" \ - -v redox-"$(id -u)-$(id -g)"-cargo:/usr/local/cargo \ - -v redox-"$(id -u)-$(id -g)"-rustup:/usr/local/rustup \ - -v "$(pwd):$(pwd)" -w "$(pwd)" --rm -it redoxos/redox "$@" diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh deleted file mode 100755 index 2cea4ee9a..000000000 --- a/docker/entrypoint.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env bash - -# Add local user -# Either use LOCAL_UID and LOCAL_GID if passed in at runtime via -# -e LOCAL_UID="$(id -u)" -e LOCAL_GID="$(id -g)" or fallback -USER_NAME=redox -RUN_UID=${LOCAL_UID:-9001} -RUN_GID=${LOCAL_GID:-9001} - -groupadd --non-unique --gid $RUN_GID $USER_NAME -useradd --non-unique --create-home --uid $RUN_UID --gid $USER_NAME --groups sudo $USER_NAME - -echo "$USER_NAME ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/user-no-sudo-password - -export HOME=/home/$USER_NAME - -# Check current UID and GID of files in the named volume caches for -# cargo and rustup. Test only one of the top level folders to speed -# things up. -TESTFILE=$RUSTUP_HOME/settings.toml -CACHED_UID=$(stat -c "%u" $TESTFILE) -CACHED_GID=$(stat -c "%g" $TESTFILE) - -if [ $CACHED_UID != $RUN_UID ] || [ $RUN_GID != $CACHED_GID ]; then - echo -e "\033[01;38;5;155mChanging user id:group to ${RUN_UID}:${RUN_GID}. Please wait...\033[0m" - chown $RUN_UID:$RUN_GID -R $CARGO_HOME $RUSTUP_HOME -fi - -# fixes issue in docker for mac where fuse permissions are restricted to root:root -# https://github.com/theferrit32/data-commons-workspace/issues/5 -# https://github.com/heliumdatacommons/data-commons-workspace/commit/f96624c8a55f5ded5ac60f4f54182a59be92e66d -if [ -f /dev/fuse ]; then chmod 666 /dev/fuse; fi - -exec gosu $USER_NAME "$@"