Bundler: initial port to macOS.

This commit is contained in:
2018-08-07 18:00:23 +02:00
parent 95005ce271
commit 36023cec88
2 changed files with 73 additions and 27 deletions

View File

@@ -2,7 +2,7 @@
################################################################################
#
# Prepares benchmark bundle for Linux.
# Prepares benchmark bundle for Linux and macOS.
#
# This is so called "works for me (tm)".
#
@@ -17,7 +17,26 @@
#
################################################################################
SCRIPT=$(readlink -f $0)
################################################################################
# Platform Detection
UNAME=`which uname`
if [ -z "${UNAME}" ]; then
echo "ERROR: uname is not found, can not continue."
exit 1
fi
KERNEL_NAME=`$UNAME -s`
################################################################################
# Configuration
if [ "${KERNEL_NAME}" == "Darwin" ]; then
SCRIPT=$(realpath $0)
else
SCRIPT=$(readlink -f $0)
fi
SCRIPTPATH=`dirname $SCRIPT`
BENCHMARK_VERSION="1.0"
@@ -33,13 +52,6 @@ fi
################################################################################
# Initialization and sanity checks.
UNAME=`which uname`
if [ -z "${UNAME}" ]; then
echo "ERROR: uname is not found, can not continue."
exit 1
fi
KERNEL_NAME=`$UNAME -s`
BITNESS="64"
if [ "${KERNEL_NAME}" == "Linux" ]; then
MACHINE_TYPE=`${UNAME} -m`
@@ -48,6 +60,9 @@ if [ "${KERNEL_NAME}" == "Linux" ]; then
else
BITNESS="32"
fi
elif [ "${KERNEL_NAME}" == "Darwin" ]; then
MACHINE_TYPE="x86_64"
BITNESS="64"
fi
SVN_BENCHMARK_URL="https://svn.blender.org/svnroot/bf-blender/trunk/lib/benchmarks/cycles/"
@@ -57,6 +72,13 @@ SCENES="barbershop_interior bmw27 classroom fishy_cat koro pavillon_barcelona"
IMAGE_WIDTH=1600 # 800*2
IMAGE_HEIGHT=740 # 370*2
# For macOS, data is installed into bundle
if [ "${KERNEL_NAME}" == "Darwin" ]; then
DATA_DIRECTORY="${BUNDLE_DIRECTORY}/blender-benchmark.app/Contents/Resources"
else
DATA_DIRECTORY="${BUNDLE_DIRECTORY}"
fi
# Information about Blender to bundle.
if [ "${KERNEL_NAME}" == "Linux" ]; then
if [ "${BITNESS}" == "64" ]; then
@@ -66,6 +88,9 @@ if [ "${KERNEL_NAME}" == "Linux" ]; then
BLENDER_PLATFORM="linux-glibc219-i686"
BLENDER_PLATFORM_AND_EXTENSION="${BLENDER_PLATFORM}.tar.bz2"
fi
elif [ "${KERNEL_NAME}" == "Darwin" ]; then
BLENDER_PLATFORM="macOS-10.6"
BLENDER_PLATFORM_AND_EXTENSION="${BLENDER_PLATFORM}.zip"
else
echo "ERROR: Unsupported platform."
exit 1
@@ -161,31 +186,39 @@ fi
# We always start from scratch.
rm -rf "${BUNDLE_DIRECTORY}"
mkdir -p "${BUNDLE_DIRECTORY}"
mkdir -p "${DATA_DIRECTORY}"
# Download blender
echo "Downloading Blender..."
${WGET} -c "${BLENDER_FULL_URL}" -O "${STORAGE_DIRECTORY}/${BLENDER_RELEASE_FILE}"
echo "Unpacking Blender..."
mkdir -p "${BUNDLE_DIRECTORY}/blender"
${TAR} -xf "${STORAGE_DIRECTORY}/${BLENDER_RELEASE_FILE}" --directory "${BUNDLE_DIRECTORY}/blender" --strip-components 1
rm -f "${BUNDLE_DIRECTORY}/blender/blenderplayer"
mkdir -p "${DATA_DIRECTORY}/blender"
if [ "${KERNEL_NAME}" == "Darwin" ]; then
rm -rf "${STORAGE_DIRECTORY}/benchmark_binary"
unzip -q -o "${STORAGE_DIRECTORY}/${BLENDER_RELEASE_FILE}" -d "${STORAGE_DIRECTORY}/benchmark_binary"
mkdir -p "${DATA_DIRECTORY}/blender"
mv "${STORAGE_DIRECTORY}/benchmark_binary/"*"/blender.app" "${DATA_DIRECTORY}/blender/"
else
${TAR} -xf "${STORAGE_DIRECTORY}/${BLENDER_RELEASE_FILE}" --directory "${BUNDLE_DIRECTORY}/blender" --strip-components 1
rm -f "${BUNDLE_DIRECTORY}/blender/blenderplayer"
fi
# Create background to stack image on.
BACKGROUND_IMAGE="${STORAGE_DIRECTORY}/background.png"
${CONVERT} -size ${IMAGE_WIDTH}x${IMAGE_HEIGHT} xc:'rgb(51,51,51)' ${BACKGROUND_IMAGE}
# Copy scenes.
mkdir -p "${BUNDLE_DIRECTORY}/scenes"
mkdir -p "${DATA_DIRECTORY}/scenes"
echo "Bundling scenes..."
for scene in ${SCENES}; do
echo "Bundling scene ${scene}..."
cp -r "${SVN_BENCHMARK_CHECKOUT_DIRECTORY}/${scene}" "${BUNDLE_DIRECTORY}/scenes/${scene}"
cp -r "${SVN_BENCHMARK_CHECKOUT_DIRECTORY}/${scene}" "${DATA_DIRECTORY}/scenes/${scene}"
# Leave single scene only.
rm -f "${BUNDLE_DIRECTORY}/scenes/${scene}/${scene}_gpu.blend"
mv "${BUNDLE_DIRECTORY}/scenes/${scene}/${scene}_cpu.blend" "${BUNDLE_DIRECTORY}/scenes/${scene}/${scene}.blend"
rm -f "${DATA_DIRECTORY}/scenes/${scene}/${scene}_gpu.blend"
mv "${DATA_DIRECTORY}/scenes/${scene}/${scene}_cpu.blend" "${DATA_DIRECTORY}/scenes/${scene}/${scene}.blend"
# Tweak image.
if true; then
input="${BUNDLE_DIRECTORY}/scenes/${scene}/${scene}.png"
input="${DATA_DIRECTORY}/scenes/${scene}/${scene}.png"
input_we=`basename "${input%.*}"`
output_scaled="${STORAGE_DIRECTORY}/${input_we}_scaled.png"
output_compo="${STORAGE_DIRECTORY}/${input_we}.png"
@@ -222,6 +255,12 @@ ${GIT_C} pull
echo "Updatying submodules to the latest version..."
${GIT_C} submodule update --remote
if [ "${KERNEL_NAME}" == "Darwin" ]; then
# Get precompiled libs
cd "${SOURCE_DIRECTORY}"
make update
fi
mkdir -p "${BUILD_DIRECTORY}"
cd "${BUILD_DIRECTORY}"
${CMAKE} \
@@ -231,7 +270,7 @@ ${CMAKE} \
"${SOURCE_DIRECTORY}"
cd -
${MAKE} -C "${BUILD_DIRECTORY}" -j install || exit 1
${MAKE} -C "${BUILD_DIRECTORY}" -j 2 install || exit 1
${STRIP} -s "${BUNDLE_DIRECTORY}/blender-benchmark"
################################################################################