Sophie

Sophie

distrib > Mageia > cauldron > i586 > by-pkgid > 86fb21ce8befedacf19e8d960aa72978 > files > 18

blender-3.6.9-1.mga10.src.rpm

#!/bin/sh

# This script can run from any location,
# output is created in the $CWD
#
# [g.ghibo] - modified version of the internal blender's build_tgz.sh - 2020-09-21

# Force blender release versioning to 3.6.5
BLENDER_VER=3.6.5
BLENDER_BRANCH=-v3.6-release

if [ ! -e blender ]; then
	git clone --recursive -b blender${BLENDER_BRANCH} https://projects.blender.org/blender/blender
else
	git pull
fi

pushd blender
make update
GITDATE=$(git log -n 1 --pretty='format:%cd' --date=format:'%Y%m%d' HEAD)
popd

BASE_DIR="$PWD"
blender_srcdir=${BASE_DIR}/blender
blender_version=$(grep "BLENDER_VERSION\s" "$blender_srcdir/source/blender/blenkernel/BKE_blender_version.h" | awk '{print $3}')
blender_version_char=$(grep "BLENDER_VERSION_CHAR\s" "$blender_srcdir/source/blender/blenkernel/BKE_blender_version.h" | awk '{print $3}')
blender_version_cycle=$(grep "BLENDER_VERSION_CYCLE\s" "$blender_srcdir/source/blender/blenkernel/BKE_blender_version.h" | awk '{print $3}')
blender_subversion=$(grep "BLENDER_SUBVERSION\s" "$blender_srcdir/source/blender/blenkernel/BKE_blender_version.h" | awk '{print $3}')

if [ "$blender_version_cycle" = "release" ] ; then
	VERSION=$(expr $blender_version / 100).$(expr $blender_version % 100)$blender_version_char
	SUBMODULE_EXCLUDE="^\(release/scripts/addons_contrib\)$"
else
	VERSION=$(expr $blender_version / 100).$(expr $blender_version % 100)_$blender_subversion
	SUBMODULE_EXCLUDE="^$"  # dummy regex
fi

# override VERSION with git date
VERSION=${BLENDER_VER}-git${GITDATE}

MANIFEST="blender-$VERSION-manifest.txt"
TARBALL="blender-$VERSION.tar.gz"

cd "$blender_srcdir"

# not so nice, but works
FILTER_FILES_PY=\
"import os, sys; "\
"[print(l[:-1]) for l in sys.stdin.readlines() "\
"if os.path.isfile(l[:-1]) "\
"if os.path.basename(l[:-1]) not in {"\
"'.gitignore', "\
"'.gitmodules', "\
"'.arcconfig', "\
"}"\
"]"

# Generate buildinfo.h. Since this information is derived from git commands, this task should be performed
# offline before the tarball is generated stripped from any git information.
cmake -DSOURCE_DIR=$blender_srcdir -P $blender_srcdir/build_files/cmake/buildinfo.cmake
cp -p $blender_srcdir/build_files/cmake/buildinfo.cmake $blender_srcdir/build_files/cmake/buildinfo.cmake.bak

# preserve original git build_hash and commit timestamp into tarball
blender_build_hash=$(grep BUILD_HASH buildinfo.h.txt |awk '{print $3}' | sed -e 's@\"@@g')
blender_build_branch=$(grep BUILD_BRANCH buildinfo.h.txt |awk '{print $3}' | sed -e 's@\"@@g')
blender_build_commit_timestamp=$(grep BUILD_COMMIT_TIMESTAMP buildinfo.h.txt |awk '{print $3}')
perl -pi -e "s@MY_WC_HASH \"unknown\"@MY_WC_HASH \"${blender_build_hash}\"@" $blender_srcdir/build_files/cmake/buildinfo.cmake
perl -pi -e "s@MY_WC_BRANCH \"unknown\"@MY_WC_BRANCH \"${blender_build_branch}\"@" $blender_srcdir/build_files/cmake/buildinfo.cmake
perl -pi -e "s@MY_WC_COMMIT_TIMESTAMP 0@MY_WC_COMMIT_TIMESTAMP ${blender_build_commit_timestamp}@" $blender_srcdir/build_files/cmake/buildinfo.cmake
rm -f buildinfo.h.txt buildinfo.h

# Build master list
echo -n "Building manifest of files:  \"$BASE_DIR/$MANIFEST\" ..."
git ls-files | python3 -c "$FILTER_FILES_PY" > $BASE_DIR/$MANIFEST

# Enumerate submodules
for lcv in $(git submodule | awk '{print $2}' | grep -v "$SUBMODULE_EXCLUDE"); do
	cd "$BASE_DIR"
	cd "$blender_srcdir/$lcv"
	git ls-files | python3 -c "$FILTER_FILES_PY" | awk '$0="'"$lcv"/'"$0' >> $BASE_DIR/$MANIFEST
	cd "$BASE_DIR"
done
echo "OK"


# Create the tarball
cd "$blender_srcdir"
echo -n "Creating archive:            \"$BASE_DIR/$TARBALL\" ..."
tar --transform "s,^,blender-$VERSION/,g" \
	--use-compress-program="pigz --best" \
	--create \
	--file="$BASE_DIR/$TARBALL" \
	--files-from="$BASE_DIR/$MANIFEST"
echo "OK"

# restore original buildinfo.cmake in the git tree
mv -f $blender_srcdir/build_files/cmake/buildinfo.cmake.bak $blender_srcdir/build_files/cmake/buildinfo.cmake

# Create checksum file
cd "$BASE_DIR"
echo -n "Creating checksum:          \"$BASE_DIR/$TARBALL.md5sum\" ..."
md5sum "$TARBALL" > "$TARBALL.md5sum"
echo "OK"


# Cleanup
echo -n "Cleaning up ..."
rm "$BASE_DIR/$MANIFEST"
echo "OK"

echo "Done!"