Skip to content

Commit e12d29e

Browse files
Merge pull request #212 from obscurerichard/GEN-403/raspberry-pi-port
GEN-403 Build on Raspberry Pi 2
2 parents bdad265 + f2bb26a commit e12d29e

File tree

3 files changed

+62
-41
lines changed

3 files changed

+62
-41
lines changed

scripts/Dockerfile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,8 @@ RUN /bin/bash /opt/genus/scripts/docker-install-debian-prerequisites.sh
55
RUN rm -rf /opt/genus/scripts
66
COPY . /opt/genus
77
RUN ln -s /opt/genus/creative-engine /opt/creative-engine
8-
RUN /bin/bash /opt/genus/scripts/build.sh docker-build
8+
RUN /bin/bash /opt/genus/scripts/build.sh docker-build && \
9+
mkdir -p /opt/genus/bin && \
10+
mv /opt/genus/build/genus /opt/genus/bin && \
11+
rm -rf $(ls /opt/genus | grep -v ^bin$)
12+
ENTRYPOINT /opt/genus/bin/genus

scripts/common.sh

Lines changed: 40 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -43,28 +43,30 @@ function ensure_cmake {
4343
uname=$(uname -s)
4444
tmpdir=$(mktemp -d)
4545
cmake="cmake-$version.$build-$uname-$arch"
46-
cd "$tmpdir"
46+
cd "$tmpdir" || exit 1
4747
if curl -fsSO "https://cmake.org/files/v$version/$cmake.sh"; then
48+
# Install binary package if we could retrieve it
4849
$SUDO mkdir -p /opt/cmake
4950
yes | $SUDO sh "$cmake.sh" --prefix=/opt/cmake || true # exits 141 on success for some reason
5051
$SUDO rm -f /usr/local/bin/cmake
5152
$SUDO ln -s "/opt/cmake/$cmake/bin/cmake" /usr/local/bin/cmake
5253
else
54+
55+
# Install from source (on Raspberry Pi with Rasbian 9.6 (stretch) for example.
5356
cmake="cmake-$version.$build"
5457
curl -fsSO "https://cmake.org/files/v$version/$cmake.tar.gz"
5558
tar xfz "$cmake.tar.gz"
56-
cd "$cmake"
59+
cd "$cmake" || exit 1
5760
./configure
58-
make
61+
make
5962
$SUDO make install
6063
fi
61-
# TODO: re-enable after cmake source build works
62-
# rm -rf "$tmpdir"
64+
rm -rf "$tmpdir"
6365
}
6466

6567
function ensure_debian_devtools_installed {
6668
$SUDO apt-get -qq update
67-
$SUDO apt-get -qq install --no-install-recommends build-essential git libsdl2-dev libsdl2-image-dev curl doxygen imagemagick
69+
$SUDO apt-get -qq install --no-install-recommends build-essential git libsdl2-dev libsdl2-image-dev curl doxygen imagemagick ca-certificates openssl
6870
# Ubuntu 18.04 has an old cmake (3.9) so install a newer one from binaries from cmake
6971
ensure_cmake
7072
}
@@ -148,16 +150,16 @@ function clean {
148150
}
149151

150152
# TODO: Use otool -L and some foo to find the dependencies
151-
# The sentinel is "/usr/local/opt"
153+
# The sentinel is "/usr/local/opt"
152154
function copy_sdl2_libs_to_app {
153155
if [[ "$OS" == "Darwin" ]]; then
154156
export APP_DIR="$BASE_DIR/build/genus.app"
155157
export APP_CNT_DIR="$APP_DIR/Contents"
156158
export APP_RES_DIR="$APP_CNT_DIR/Resources"
157159
export APP_MACOSX_DIR="$APP_CNT_DIR/MacOS"
158160
if [[ -d "$APP_DIR" ]]; then
159-
rm -rf "$APP_MACOSX_DIR/libs"
160-
mkdir -p "$APP_MACOSX_DIR/libs"
161+
rm -rf "$APP_MACOSX_DIR/libs"
162+
mkdir -p "$APP_MACOSX_DIR/libs"
161163

162164
cp /usr/local/opt/sdl2/lib/libSDL2.dylib "$APP_MACOSX_DIR/libs/"
163165
cp /usr/local/opt/sdl2_image/lib/libSDL2_image.dylib "$APP_MACOSX_DIR/libs/"
@@ -169,49 +171,49 @@ function copy_sdl2_libs_to_app {
169171

170172
# FIX Genus
171173
install_name_tool -change \
172-
/usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib \
173-
./libs/libSDL2.dylib \
174-
"$APP_MACOSX_DIR/genus"
174+
/usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib \
175+
./libs/libSDL2.dylib \
176+
"$APP_MACOSX_DIR/genus"
175177
install_name_tool -change \
176-
/usr/local/opt/sdl2_image/lib/libSDL2_image-2.0.0.dylib \
177-
./libs/libSDL2_image.dylib \
178-
"$APP_MACOSX_DIR/genus"
178+
/usr/local/opt/sdl2_image/lib/libSDL2_image-2.0.0.dylib \
179+
./libs/libSDL2_image.dylib \
180+
"$APP_MACOSX_DIR/genus"
179181

180182
# FIX SDL2_image
181183
install_name_tool -change \
182-
/usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib \
183-
./libs/libSDL2.dylib \
184-
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
184+
/usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib \
185+
./libs/libSDL2.dylib \
186+
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
185187
install_name_tool -change \
186-
/usr/local/opt/libpng/lib/libpng16.16.dylib \
187-
./libs/libpng.dylib \
188-
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
189-
install_name_tool -change \
190-
/usr/local/opt/jpeg/lib/libjpeg.9.dylib \
191-
./libs/libjpeg.dylib \
192-
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
188+
/usr/local/opt/libpng/lib/libpng16.16.dylib \
189+
./libs/libpng.dylib \
190+
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
191+
install_name_tool -change \
192+
/usr/local/opt/jpeg/lib/libjpeg.9.dylib \
193+
./libs/libjpeg.dylib \
194+
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
193195
install_name_tool -change \
194-
/usr/local/opt/libtiff/lib/libtiff.5.dylib \
195-
./libs/libtiff.dylib \
196-
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
196+
/usr/local/opt/libtiff/lib/libtiff.5.dylib \
197+
./libs/libtiff.dylib \
198+
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
197199
install_name_tool -change \
198-
/usr/local/opt/webp/lib/libwebp.7.dylib \
199-
./libs/libwebp.dylib \
200-
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
200+
/usr/local/opt/webp/lib/libwebp.7.dylib \
201+
./libs/libwebp.dylib \
202+
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
201203

202204
# FIX TIFF
203205
install_name_tool -change \
204-
/usr/local/opt/jpeg/lib/libjpeg.9.dylib \
205-
./libs/libjpeg.dylib \
206-
"$APP_MACOSX_DIR/libs/libtiff.dylib"
206+
/usr/local/opt/jpeg/lib/libjpeg.9.dylib \
207+
./libs/libjpeg.dylib \
208+
"$APP_MACOSX_DIR/libs/libtiff.dylib"
207209

208210
# CREATE WRAPPER
209211
mv "$APP_MACOSX_DIR/genus" "$APP_MACOSX_DIR/genus.bin"
210212
tee "$APP_MACOSX_DIR/genus" <<-"EOF"
211-
#!/usr/bin/env bash
212-
MY_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" && pwd )"
213-
(cd $MY_DIR && ./genus.bin)
214-
EOF
213+
#!/usr/bin/env bash
214+
MY_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" && pwd )"
215+
(cd $MY_DIR && ./genus.bin)
216+
EOF
215217
chmod 0755 "$BASE_DIR/build/genus.app/Contents/MacOS/genus"
216218

217219
# INSTALL APP.PLIST & ETC

scripts/docker-build.sh

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ set -euo pipefail
99
IFS=$'\n\t'
1010

1111
# Enable for enhanced debugging
12-
#set -vx
12+
DEBUG=${DEBUG:-/bin/false}
13+
"$DEBUG" && set -vx
1314

1415
# Credit to https://stackoverflow.com/a/17805088
1516
# and http://wiki.bash-hackers.org/scripting/debuggingtips
@@ -44,5 +45,19 @@ if [[ -L creative-engine ]]; then
4445
cp -a "$CREATIVE_ENGINE_DIR" .
4546
fi
4647
#shellcheck disable=SC2086,SC2048
47-
docker build . -t genus -f "$DIR/Dockerfile"
48+
case $(arch) in
49+
armv7l)
50+
DOCKERFILE="$DIR/Dockerfile-arm.tmp"
51+
sed -e 's/ubuntu:18.04/schachr\/raspbian-stretch:latest/' < "$DIR/Dockerfile" >"$DOCKERFILE"
52+
;;
53+
x86_64)
54+
DOCKERFILE="$DIR/Dockerfile"
55+
;;
56+
*)
57+
echo "Unsupported architecture $(arch)"
58+
exit 1
59+
;;
60+
esac
61+
62+
docker build -t genus -f "$DOCKERFILE" .
4863

0 commit comments

Comments
 (0)