forked from len0rd/rockbox
Add build code for Docker development environment
This simplifies the tedious task of building all the Rockbox toolchains manually by providing a build code for a Docker container image. It's useful for quickly spinning up a build client with just a couple commands and no waiting to compile (though downloading takes a little while). I've built an image as built1n/rbclient on Docker Hub. All toolchains (even the weird ones) are included, except android16. Change-Id: I6b863628ffb397604f59ec6def2f8bb8c8c7185f
This commit is contained in:
parent
7f9fc20afa
commit
02a6985799
3 changed files with 134 additions and 0 deletions
66
tools/docker_rbclient/Dockerfile
Normal file
66
tools/docker_rbclient/Dockerfile
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
FROM debian:9
|
||||||
|
|
||||||
|
WORKDIR /home/rb
|
||||||
|
|
||||||
|
ENV HOME /home/rb
|
||||||
|
ENV MAKEFLAGS -j12
|
||||||
|
|
||||||
|
RUN apt-get update && \
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||||
|
build-essential \
|
||||||
|
git \
|
||||||
|
perl \
|
||||||
|
curl \
|
||||||
|
texinfo \
|
||||||
|
flex \
|
||||||
|
bison \
|
||||||
|
bzip2 \
|
||||||
|
gzip \
|
||||||
|
zip \
|
||||||
|
patch \
|
||||||
|
automake \
|
||||||
|
libtool \
|
||||||
|
libtool-bin \
|
||||||
|
autoconf \
|
||||||
|
libmpc-dev \
|
||||||
|
gawk \
|
||||||
|
python \
|
||||||
|
python-lzo \
|
||||||
|
python-setuptools \
|
||||||
|
mtd-utils \
|
||||||
|
xorriso \
|
||||||
|
wget \
|
||||||
|
subversion \
|
||||||
|
libncurses5-dev \
|
||||||
|
texlive-latex-base \
|
||||||
|
texlive-binaries \
|
||||||
|
texlive-latex-extra \
|
||||||
|
tex4ht \
|
||||||
|
texlive-fonts-recommended \
|
||||||
|
lmodern \
|
||||||
|
latex-xcolor \
|
||||||
|
texlive-base \
|
||||||
|
libsdl1.2-dev \
|
||||||
|
libsdl1.2debian
|
||||||
|
|
||||||
|
RUN cd /home/rb && git clone git://git.rockbox.org/rockbox
|
||||||
|
|
||||||
|
RUN cd /home/rb/rockbox && ./tools/rockboxdev.sh --target="s"
|
||||||
|
RUN cd /home/rb/rockbox && ./tools/rockboxdev.sh --target="m"
|
||||||
|
RUN cd /home/rb/rockbox && ./tools/rockboxdev.sh --target="a"
|
||||||
|
RUN cd /home/rb/rockbox && ./tools/rockboxdev.sh --target="i"
|
||||||
|
RUN cd /home/rb/rockbox && ./tools/rockboxdev.sh --target="x"
|
||||||
|
RUN cd /home/rb/rockbox && ./tools/rockboxdev.sh --target="y"
|
||||||
|
|
||||||
|
# compile sometimes fails; place this last to avoid duplicate work
|
||||||
|
RUN cd /home/rb/rockbox && ./tools/rockboxdev.sh --target="r"
|
||||||
|
|
||||||
|
RUN cd /home/rb/rockbox && \
|
||||||
|
wget "http://git.rockbox.org/?p=www.git;a=blob_plain;f=buildserver/rbclient.pl;hb=HEAD" -O rbclient.pl && \
|
||||||
|
chmod +x rbclient.pl
|
||||||
|
|
||||||
|
COPY runclient_modified.sh /home/rb/rockbox/runclient.sh
|
||||||
|
|
||||||
|
RUN cd /home/rb/rockbox && chmod +x runclient.sh
|
||||||
|
|
||||||
|
ENTRYPOINT cd /home/rb/rockbox && ./runclient.sh $USER $PASS $NAME
|
35
tools/docker_rbclient/README
Normal file
35
tools/docker_rbclient/README
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
This directory builds a Docker container image for a rockbox build
|
||||||
|
client with all toolchains except android.
|
||||||
|
|
||||||
|
There is a pre-built client available as built1n/rbclient on Docker
|
||||||
|
Hub if you would like to avoid having to build all the toolchains. See
|
||||||
|
the Docker documentation on how to pull and run it.
|
||||||
|
|
||||||
|
To build from scratch:
|
||||||
|
|
||||||
|
1. Make sure you have Docker installed and running.
|
||||||
|
|
||||||
|
2. Run:
|
||||||
|
|
||||||
|
docker build . -t myclient
|
||||||
|
|
||||||
|
This will build the image and tag it as `myclient.'
|
||||||
|
|
||||||
|
3. To run your client:
|
||||||
|
|
||||||
|
docker run -e USER=your username -e PASS=anything -e NAME=clientname \
|
||||||
|
myclient
|
||||||
|
|
||||||
|
You can also run a bash shell interactively by issuing:
|
||||||
|
|
||||||
|
docker run -it myclient bash
|
||||||
|
|
||||||
|
This will drop you into a fully-equiped rockbox development
|
||||||
|
environment.
|
||||||
|
|
||||||
|
It is also possible to pull straight from Docker Hub. Run:
|
||||||
|
|
||||||
|
docker pull built1n/rbclient
|
||||||
|
|
||||||
|
Then you can use all the commands above, with `myclient' replaced with
|
||||||
|
`built1n/rbclient'.
|
33
tools/docker_rbclient/runclient_modified.sh
Normal file
33
tools/docker_rbclient/runclient_modified.sh
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
#!/bin/sh
|
||||||
|
trap "exit" INT
|
||||||
|
|
||||||
|
USER=$1
|
||||||
|
PASS=$2
|
||||||
|
NAME=$3
|
||||||
|
ARCHLIST=arm-eabi-gcc444,arm-rb-gcc494,sh,m68k-gcc452,mipsel-gcc494,mipsel-rb-gcc494,sdl,latex
|
||||||
|
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
if [ -f "rbclient.pl.new" ]; then
|
||||||
|
mv "rbclient.pl.new" "rbclient.pl"
|
||||||
|
fi
|
||||||
|
# Possible values for archlist are:
|
||||||
|
|
||||||
|
# arm-eabi-gcc444 : needed for ARM-based traditional targets
|
||||||
|
# arm-rb-gcc494 : linux based sony players, Samsung YP-R0 YP-R1
|
||||||
|
# sh : SH-based players, i.e. the Archoses
|
||||||
|
# m68k-gcc452 : coldfire-based players
|
||||||
|
# mipsel-gcc494 : MIPS-based players
|
||||||
|
# mipsel-rb-gcc494: linux based MIPS players i.e Agptek Rocker (Benjie T6)
|
||||||
|
# sdl : Non-crosscompiled targets. Simulators, application, checkwps, database tool, ...
|
||||||
|
# android16 : Android port
|
||||||
|
# latex : manuual
|
||||||
|
|
||||||
|
perl -s rbclient.pl -username=$USER -password=$PASS -clientname=$NAME -archlist=$ARCHLIST -buildmaster=buildmaster.rockbox.org -port=19999
|
||||||
|
res=$?
|
||||||
|
if test "$res" -eq 22; then
|
||||||
|
echo "Address the above issue(s), then restart!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
sleep 30
|
||||||
|
done
|
Loading…
Add table
Add a link
Reference in a new issue