Cleanup: use 2 space indentation for shell scripts
[blender.git] / build_files / utils / build_tgz.sh
1 #!/bin/sh
2
3 # This script can run from any location,
4 # output is created in the $CWD
5
6 BASE_DIR="$PWD"
7
8 blender_srcdir=$(dirname -- $0)/../..
9 blender_version=$(grep "BLENDER_VERSION\s" "$blender_srcdir/source/blender/blenkernel/BKE_blender_version.h" | awk '{print $3}')
10 blender_version_char=$(grep "BLENDER_VERSION_CHAR\s" "$blender_srcdir/source/blender/blenkernel/BKE_blender_version.h" | awk '{print $3}')
11 blender_version_cycle=$(grep "BLENDER_VERSION_CYCLE\s" "$blender_srcdir/source/blender/blenkernel/BKE_blender_version.h" | awk '{print $3}')
12 blender_subversion=$(grep "BLENDER_SUBVERSION\s" "$blender_srcdir/source/blender/blenkernel/BKE_blender_version.h" | awk '{print $3}')
13
14 if [ "$blender_version_cycle" = "release" ] ; then
15   VERSION=$(expr $blender_version / 100).$(expr $blender_version % 100)$blender_version_char
16   SUBMODULE_EXCLUDE="^\(release/scripts/addons_contrib\)$"
17 else
18   VERSION=$(expr $blender_version / 100).$(expr $blender_version % 100)_$blender_subversion
19   SUBMODULE_EXCLUDE="^$"  # dummy regex
20 fi
21
22 MANIFEST="blender-$VERSION-manifest.txt"
23 TARBALL="blender-$VERSION.tar.gz"
24
25 cd "$blender_srcdir"
26
27 # not so nice, but works
28 FILTER_FILES_PY=\
29 "import os, sys; "\
30 "[print(l[:-1]) for l in sys.stdin.readlines() "\
31 "if os.path.isfile(l[:-1]) "\
32 "if os.path.basename(l[:-1]) not in {"\
33 "'.gitignore', "\
34 "'.gitmodules', "\
35 "'.arcconfig', "\
36 "}"\
37 "]"
38
39 # Build master list
40 echo -n "Building manifest of files:  \"$BASE_DIR/$MANIFEST\" ..."
41 git ls-files | python3 -c "$FILTER_FILES_PY" > $BASE_DIR/$MANIFEST
42
43 # Enumerate submodules
44 for lcv in $(git submodule | awk '{print $2}' | grep -v "$SUBMODULE_EXCLUDE"); do
45   cd "$BASE_DIR"
46   cd "$blender_srcdir/$lcv"
47   git ls-files | python3 -c "$FILTER_FILES_PY" | awk '$0="'"$lcv"/'"$0' >> $BASE_DIR/$MANIFEST
48   cd "$BASE_DIR"
49 done
50 echo "OK"
51
52
53 # Create the tarball
54 cd "$blender_srcdir"
55 echo -n "Creating archive:            \"$BASE_DIR/$TARBALL\" ..."
56 tar --transform "s,^,blender-$VERSION/,g" \
57   --use-compress-program="gzip --best" \
58   --create \
59   --file="$BASE_DIR/$TARBALL" \
60   --files-from="$BASE_DIR/$MANIFEST"
61 echo "OK"
62
63
64 # Create checksum file
65 cd "$BASE_DIR"
66 echo -n "Creating checksum:          \"$BASE_DIR/$TARBALL.md5sum\" ..."
67 md5sum "$TARBALL" > "$TARBALL.md5sum"
68 echo "OK"
69
70
71 # Cleanup
72 echo -n "Cleaning up ..."
73 rm "$BASE_DIR/$MANIFEST"
74 echo "OK"
75
76 echo "Done!"