Group :: Gráficos
RPM: blender
Main Changelog Spec Patches Sources Download Gear Bugs e FR Repocop
#!/bin/sh -euf
#
# A wrapper script for Blender
#
# In case user's home directory doesn't contain ~/.blender, symlink it
# from /usr/lib/blender
BF_HOME="$HOME/.blender"
BF_LIBS='@LIBDIR@/blender'
BF_DATA='/usr/share/blender'
BF_HOMEDIRS='plugins/sequence plugins/texture scripts'
bf_update_symlink() {
[ $# -ne 2 ] && return 1
# symlink is existing already
if [ -h "$2" ] ; then
# broken symlink: remove
[ -r "$2" ] || rm -f "$2"
# does not point to proper target: remove
[ "$(readlink $2)" != "$1" ] && rm -f "$2"
fi
# create symlink
[ ! -e "$2" ] && [ -e "$1" ] && ln -s "$1" "$2"
return 0
}
bf_rm_broken_links() {
[ $# -ne 1 ] && return 1
for slnk in $(find $1 -mindepth 1 -maxdepth 1 -type l) ; do
[ -r $slnk ] || rm -f $slnk
done
return 0
}
# calculate the reference checksum
CHECK_DIRS=
for i in $BF_HOMEDIRS ; do
CHECK_DIRS="$CHECK_DIRS $BF_LIBS/$i"
done
CHECK_DIRS="$CHECK_DIRS $BF_DATA"
ref=$(find $CHECK_DIRS -mindepth 1 -maxdepth 1 -type f -printf '%p%s%T@\n'| sort)
sum=$(echo -n "$ref" | md5sum)
if [ ! -r "$BF_HOME/checksum" ] || [ -n "$(echo -n $sum | cmp $BF_HOME/checksum -)" ] ; then
echo Creating/updating homedir symlinks, removing menu cache
# create directories tree
for i in $BF_HOMEDIRS ; do
[ -d "$BF_HOME/$i" ] || install -d "$BF_HOME/$i"
done
# remove blender's menu cache, should be recreated by blender
[ -r "$BF_HOME/Bpymenus" ] && rm -f "$BF_HOME/Bpymenus"
# symlinks to font and languages list
bf_update_symlink $BF_DATA/.Blanguages $BF_HOME/.Blanguages
bf_update_symlink $BF_DATA/.bfont.ttf $BF_HOME/.bfont.ttf
# symlinks to plugins and scripts
for i in $BF_HOMEDIRS ; do
# remove broken links (scripts or plugins was uninstalled)
bf_rm_broken_links "$BF_HOME/$i"
for j in $(find "$BF_LIBS/$i" -mindepth 1 -maxdepth 1 -type f -printf '%f\n');
do
bf_update_symlink "$BF_LIBS/$i/$j" "$BF_HOME/$i/$j"
done
done
# symlink to libdir/blender/scripts/bpymodules
bf_update_symlink "$BF_LIBS/scripts/bpymodules" "$BF_HOME/scripts/bpymodules"
# copy libdir/blender/scripts/bpydata, should be used for scripts configuration data
[ -e "$BF_HOME/scripts/bpydata" ] || cp -ax "$BF_LIBS/scripts/bpydata" "$BF_HOME/scripts/bpydata"
# store reference checksum
echo -n $sum > "$BF_HOME/checksum"
fi
# deal with TEMP environment variable, used in blender
TEMP=${TMP:=/tmp}
export TEMP
# run blender
echo Running Blender
/usr/bin/blender-bin $@