Fix edit-mesh select crash when using face-dots
[blender.git] / build_files / package_spec / build_archive.py
1 #!/usr/bin/env python3
2
3 # <pep8 compliant>
4
5 import os
6 import shutil
7 import subprocess
8 import sys
9
10 # todo:
11 # strip executables
12
13 # get parameters
14 if len(sys.argv) < 5:
15     sys.stderr.write('Excepted arguments: ./build_archive.py name extension install_dir output_dir')
16     sys.exit(1)
17
18 package_name = sys.argv[1]
19 extension = sys.argv[2]
20 install_dir = sys.argv[3]
21 output_dir = sys.argv[4]
22
23 package_archive = os.path.join(output_dir, package_name + '.' + extension)
24 package_dir = package_name
25
26 # remove existing package with the same name
27 try:
28     if os.path.exists(package_archive):
29         os.remove(package_archive)
30     if os.path.exists(package_dir):
31         shutil.rmtree(package_dir)
32 except Exception as ex:
33     sys.stderr.write('Failed to clean up old package files: ' + str(ex) + '\n')
34     sys.exit(1)
35
36 # create temporary package dir
37 try:
38     shutil.copytree(install_dir, package_dir)
39
40     for f in os.listdir(package_dir):
41         if f.startswith('makes'):
42             os.remove(os.path.join(package_dir, f))
43 except Exception as ex:
44     sys.stderr.write('Failed to copy install directory: ' + str(ex) + '\n')
45     sys.exit(1)
46
47 # create archive
48 try:
49     if not os.path.exists(output_dir):
50         os.mkdir(output_dir)
51
52     if extension == 'zip':
53         archive_cmd = ['zip', '-9', '-r', package_archive, package_dir]
54     elif extension == 'tar.bz2':
55         archive_cmd = ['tar', 'cjf', package_archive, package_dir]
56     else:
57         sys.stderr.write('Unknown archive extension: ' + extension)
58         sys.exit(-1)
59
60     subprocess.call(archive_cmd)
61 except Exception as ex:
62     sys.stderr.write('Failed to create package archive: ' + str(ex) + '\n')
63     sys.exit(1)
64
65 # empty temporary package dir
66 try:
67     shutil.rmtree(package_dir)
68 except Exception as ex:
69     sys.stderr.write('Failed to clean up package directory: ' + str(ex) + '\n')
70     sys.exit(1)