Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion scripts/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,8 @@ RUN /bin/bash /opt/genus/scripts/docker-install-debian-prerequisites.sh
RUN rm -rf /opt/genus/scripts
COPY . /opt/genus
RUN ln -s /opt/genus/creative-engine /opt/creative-engine
RUN /bin/bash /opt/genus/scripts/build.sh docker-build
RUN /bin/bash /opt/genus/scripts/build.sh docker-build && \
mkdir -p /opt/genus/bin && \
mv /opt/genus/build/genus /opt/genus/bin && \
rm -rf $(ls /opt/genus | grep -v ^bin$)
ENTRYPOINT /opt/genus/bin/genus
78 changes: 40 additions & 38 deletions scripts/common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,28 +43,30 @@ function ensure_cmake {
uname=$(uname -s)
tmpdir=$(mktemp -d)
cmake="cmake-$version.$build-$uname-$arch"
cd "$tmpdir"
cd "$tmpdir" || exit 1
if curl -fsSO "https://cmake.org/files/v$version/$cmake.sh"; then
# Install binary package if we could retrieve it
$SUDO mkdir -p /opt/cmake
yes | $SUDO sh "$cmake.sh" --prefix=/opt/cmake || true # exits 141 on success for some reason
$SUDO rm -f /usr/local/bin/cmake
$SUDO ln -s "/opt/cmake/$cmake/bin/cmake" /usr/local/bin/cmake
else

# Install from source (on Raspberry Pi with Rasbian 9.6 (stretch) for example.
cmake="cmake-$version.$build"
curl -fsSO "https://cmake.org/files/v$version/$cmake.tar.gz"
tar xfz "$cmake.tar.gz"
cd "$cmake"
cd "$cmake" || exit 1
./configure
make
make
$SUDO make install
fi
# TODO: re-enable after cmake source build works
# rm -rf "$tmpdir"
rm -rf "$tmpdir"
}

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

# TODO: Use otool -L and some foo to find the dependencies
# The sentinel is "/usr/local/opt"
# The sentinel is "/usr/local/opt"
function copy_sdl2_libs_to_app {
if [[ "$OS" == "Darwin" ]]; then
export APP_DIR="$BASE_DIR/build/genus.app"
export APP_CNT_DIR="$APP_DIR/Contents"
export APP_RES_DIR="$APP_CNT_DIR/Resources"
export APP_MACOSX_DIR="$APP_CNT_DIR/MacOS"
if [[ -d "$APP_DIR" ]]; then
rm -rf "$APP_MACOSX_DIR/libs"
mkdir -p "$APP_MACOSX_DIR/libs"
rm -rf "$APP_MACOSX_DIR/libs"
mkdir -p "$APP_MACOSX_DIR/libs"

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

# FIX Genus
install_name_tool -change \
/usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib \
./libs/libSDL2.dylib \
"$APP_MACOSX_DIR/genus"
/usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib \
./libs/libSDL2.dylib \
"$APP_MACOSX_DIR/genus"
install_name_tool -change \
/usr/local/opt/sdl2_image/lib/libSDL2_image-2.0.0.dylib \
./libs/libSDL2_image.dylib \
"$APP_MACOSX_DIR/genus"
/usr/local/opt/sdl2_image/lib/libSDL2_image-2.0.0.dylib \
./libs/libSDL2_image.dylib \
"$APP_MACOSX_DIR/genus"

# FIX SDL2_image
install_name_tool -change \
/usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib \
./libs/libSDL2.dylib \
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
/usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib \
./libs/libSDL2.dylib \
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
install_name_tool -change \
/usr/local/opt/libpng/lib/libpng16.16.dylib \
./libs/libpng.dylib \
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
install_name_tool -change \
/usr/local/opt/jpeg/lib/libjpeg.9.dylib \
./libs/libjpeg.dylib \
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
/usr/local/opt/libpng/lib/libpng16.16.dylib \
./libs/libpng.dylib \
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
install_name_tool -change \
/usr/local/opt/jpeg/lib/libjpeg.9.dylib \
./libs/libjpeg.dylib \
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
install_name_tool -change \
/usr/local/opt/libtiff/lib/libtiff.5.dylib \
./libs/libtiff.dylib \
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
/usr/local/opt/libtiff/lib/libtiff.5.dylib \
./libs/libtiff.dylib \
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
install_name_tool -change \
/usr/local/opt/webp/lib/libwebp.7.dylib \
./libs/libwebp.dylib \
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"
/usr/local/opt/webp/lib/libwebp.7.dylib \
./libs/libwebp.dylib \
"$APP_MACOSX_DIR/libs/libSDL2_image.dylib"

# FIX TIFF
install_name_tool -change \
/usr/local/opt/jpeg/lib/libjpeg.9.dylib \
./libs/libjpeg.dylib \
"$APP_MACOSX_DIR/libs/libtiff.dylib"
/usr/local/opt/jpeg/lib/libjpeg.9.dylib \
./libs/libjpeg.dylib \
"$APP_MACOSX_DIR/libs/libtiff.dylib"

# CREATE WRAPPER
mv "$APP_MACOSX_DIR/genus" "$APP_MACOSX_DIR/genus.bin"
tee "$APP_MACOSX_DIR/genus" <<-"EOF"
#!/usr/bin/env bash
MY_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" && pwd )"
(cd $MY_DIR && ./genus.bin)
EOF
#!/usr/bin/env bash
MY_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" && pwd )"
(cd $MY_DIR && ./genus.bin)
EOF
chmod 0755 "$BASE_DIR/build/genus.app/Contents/MacOS/genus"

# INSTALL APP.PLIST & ETC
Expand Down
19 changes: 17 additions & 2 deletions scripts/docker-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ set -euo pipefail
IFS=$'\n\t'

# Enable for enhanced debugging
#set -vx
DEBUG=${DEBUG:-/bin/false}
"$DEBUG" && set -vx

# Credit to https://stackoverflow.com/a/17805088
# and http://wiki.bash-hackers.org/scripting/debuggingtips
Expand Down Expand Up @@ -44,5 +45,19 @@ if [[ -L creative-engine ]]; then
cp -a "$CREATIVE_ENGINE_DIR" .
fi
#shellcheck disable=SC2086,SC2048
docker build . -t genus -f "$DIR/Dockerfile"
case $(arch) in
armv7l)
DOCKERFILE="$DIR/Dockerfile-arm.tmp"
sed -e 's/ubuntu:18.04/schachr\/raspbian-stretch:latest/' < "$DIR/Dockerfile" >"$DOCKERFILE"
;;
x86_64)
DOCKERFILE="$DIR/Dockerfile"
;;
*)
echo "Unsupported architecture $(arch)"
exit 1
;;
esac

docker build -t genus -f "$DOCKERFILE" .