Add docker files for development environment

master
Jos van den Oever 2017-09-03 11:15:57 +02:00
parent 3ed56922a5
commit c5cc2964f2
3 changed files with 63 additions and 0 deletions

1
.gitignore vendored
View File

@ -1,4 +1,5 @@
/demo/rust/Cargo.lock
/demo/rust/target/
/docker_home/
/tests/rust_*/Cargo.lock
/tests/rust_*/target/

26
docker/Dockerfile Normal file
View File

@ -0,0 +1,26 @@
# Dockerfile for a development environment for rust_qt_binding_generator
FROM kdeneon/plasma:dev-stable
USER root
RUN apt-get update && apt-get dist-upgrade -y
# build dependencies and many extra qml modules
RUN apt-get install -y --no-install-recommends \
qtcreator rustc cargo ninja-build cmake g++ extra-cmake-modules \
kdesdk-scripts \
qtdeclarative5-dev-tools qtdeclarative5-dev qtquickcontrols2-5-dev \
libqt5charts5-dev libqt5svg5-dev \
qtdeclarative5-render2d-plugin \
qt5-doc qtbase5-doc qtcharts5-doc qtcreator-doc qtquickcontrols2-5-doc \
qtquickcontrols5-doc qtsvg5-doc qttools5-doc
RUN apt-get install -y --no-install-recommends \
qtquickcontrols2-5-examples
# these are extra
# RUN apt-get install -y --no-install-recommends qbs-doc qml-module-org-kde-activities qml-module-org-kde-analitza qml-module-org-kde-bluezqt qml-module-org-kde-draganddrop qml-module-org-kde-extensionplugin qml-module-org-kde-games-core qml-module-org-kde-kaccounts qml-module-org-kde-kconfig qml-module-org-kde-kcoreaddons qml-module-org-kde-kholidays qml-module-org-kde-kio qml-module-org-kde-kirigami qml-module-org-kde-kirigami2 qml-module-org-kde-kquickcontrols qml-module-org-kde-kquickcontrolsaddons qml-module-org-kde-kwindowsystem qml-module-org-kde-newstuff qml-module-org-kde-people qml-module-org-kde-purpose qml-module-org-kde-runnermodel qml-module-org-kde-solid qml-module-org-kde-telepathy qml-module-qt-labs-calendar qml-module-qt-labs-folderlistmodel qml-module-qt-labs-platform qml-module-qt-labs-settings qml-module-qt-labs-sharedimage qml-module-qt-websockets qml-module-qt3d qml-module-qtaudioengine qml-module-qtbluetooth qml-module-qtcharts qml-module-qtfeedback qml-module-qtgraphicaleffects qml-module-qtgstreamer qml-module-qtlocation qml-module-qtmultimedia qml-module-qtnfc qml-module-qtpositioning qml-module-qtpurchasing qml-module-qtqml-models2 qml-module-qtqml-statemachine qml-module-qtquick-controls qml-module-qtquick-controls-styles-breeze qml-module-qtquick-controls2 qml-module-qtquick-dialogs qml-module-qtquick-extras qml-module-qtquick-layouts qml-module-qtquick-localstorage qml-module-qtquick-particles2 qml-module-qtquick-privatewidgets qml-module-qtquick-scene2d qml-module-qtquick-scene3d qml-module-qtquick-sharedimage qml-module-qtquick-templates2 qml-module-qtquick-virtualkeyboard qml-module-qtquick-window2 qml-module-qtquick-xmllistmodel qml-module-qtquick2 qml-module-qtsensors qml-module-qtsysteminfo qml-module-qttest qml-module-qtwayland-compositor qml-module-qtwebchannel qml-module-qtwebengine qml-module-qtwebkit qml-module-qtwebsockets qml-module-qtwebview qt-at-spi-doc qt3d5-doc qtconnectivity5-doc qtgraphicaleffects5-doc qtgstreamer-doc qtiplot-doc qtlocation5-doc qtmultimedia5-doc qtnetworkauth5-doc qtpim5-doc qtpositioning5-doc qtscript5-doc qtsensors5-doc qtserialport5-doc qtspeech5-doc qtwayland5-doc qtwebchannel-doc qtwebchannel5-doc qtwebengine5-doc qtwebkit5-doc qtwebkit5-examples-doc qtwebsockets5-doc qtwebview5-doc qtx11extras5-doc qtxmlpatterns5-doc
USER neon
CMD ["/bin/bash", "-l"]

36
docker/docker-bash-session.sh Executable file
View File

@ -0,0 +1,36 @@
#!/usr/bin/env bash
# exit on first error
set -o errexit
# exit when undefined var is used
set -o nounset
# exit with error code of right-most command in a pipe
set -o pipefail
# This script opens a bash session in docker for the Dockerfile in this folder.
readonly image_name=rust_qt_binding_generator_dev
readonly docker_file_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
readonly src_dir=$(dirname "$docker_file_dir")
readonly docker_home_dir="$src_dir/docker_home"
# create the docker image
docker build -t "$image_name" "$docker_file_dir"
# create a working directory
if [ ! -a "$docker_home_dir" ]; then
mkdir -p "$docker_home_dir"/rust_qt_binding_generator
fi
# give the docker application access to X
xhost +si:localuser:"$USER"
# start a docker session with the source code and a dedicated home directory
docker run --rm -v "$docker_home_dir":/home/neon \
-v "$src_dir":/home/neon/rust_qt_binding_generator \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY="$DISPLAY" \
-e XDG_CURRENT_DESKTOP="$XDG_CURRENT_DESKTOP" \
-ti "$image_name" bash
# --network none \