Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'build_files/utils/make_source_archive.sh')
-rwxr-xr-xbuild_files/utils/make_source_archive.sh76
1 files changed, 76 insertions, 0 deletions
diff --git a/build_files/utils/make_source_archive.sh b/build_files/utils/make_source_archive.sh
new file mode 100755
index 00000000000..ab940f7305f
--- /dev/null
+++ b/build_files/utils/make_source_archive.sh
@@ -0,0 +1,76 @@
+#!/bin/sh
+
+# This script can run from any location,
+# output is created in the $CWD
+
+BASE_DIR="$PWD"
+
+blender_srcdir=$(dirname -- $0)/../..
+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
+
+MANIFEST="blender-$VERSION-manifest.txt"
+TARBALL="blender-$VERSION.tar.xz"
+
+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', "\
+"}"\
+"]"
+
+# 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="xz -9" \
+ --create \
+ --file="$BASE_DIR/$TARBALL" \
+ --files-from="$BASE_DIR/$MANIFEST"
+echo "OK"
+
+
+# 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!"