File: make_package_win32.sh

package info (click to toggle)
renderdoc 1.2%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 79,584 kB
  • sloc: cpp: 491,671; ansic: 285,823; python: 12,617; java: 11,345; cs: 7,181; makefile: 6,703; yacc: 5,682; ruby: 4,648; perl: 3,461; php: 2,119; sh: 2,068; lisp: 1,835; tcl: 1,068; ml: 747; xml: 137
file content (155 lines) | stat: -rwxr-xr-x 6,755 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#!/bin/bash

FILENAME="$1"

if [ $# -ne 1 ]; then
	echo "Usage: $0 FILENAME";
	exit;
fi

if [ ! -d "${REPO_ROOT}"/x64/Release ] || [ ! -d "${REPO_ROOT}"/Win32/Release ]; then
	echo "ERROR: Missing one of Win32 or x64 Release builds";
	exit 1;
fi

pushd "${REPO_ROOT}"

# clean any old files lying around and make new structure
rm -rf dist
mkdir -p dist/Release{32,64}

# Copy files from release build in, without copying obj/
pushd x64/Release
find * -not -path 'obj*' -and -not -path '*.lib' -and -not -path 'pymodules*' -exec cp -r --parents '{}' ../../dist/Release64/ \;
popd

pushd Win32/Release
find * -not -path 'obj*' -and -not -path '*.lib' -and -not -path 'pymodules*' -exec cp -r --parents '{}' ../../dist/Release32/ \;
popd

# Copy in d3dcompiler from windows kit. Prefer 10 over 8.1 but either works
if [ -f "${WIN_ROOT}c/Program Files (x86)/Windows Kits/10/Redist/D3D/x64/d3dcompiler_47.dll" ]; then
	cp "${WIN_ROOT}c/Program Files (x86)/Windows Kits/10/Redist/D3D/x64/d3dcompiler_47.dll" dist/Release64/
	cp "${WIN_ROOT}c/Program Files (x86)/Windows Kits/10/Redist/D3D/x86/d3dcompiler_47.dll" dist/Release32/
elif [ -f "${WIN_ROOT}c/Program Files (x86)/Windows Kits/8.1/Redist/D3D/x64/d3dcompiler_47.dll" ]; then 
	cp "${WIN_ROOT}c/Program Files (x86)/Windows Kits/8.1/Redist/D3D/x64/d3dcompiler_47.dll" dist/Release64/
	cp "${WIN_ROOT}c/Program Files (x86)/Windows Kits/8.1/Redist/D3D/x86/d3dcompiler_47.dll" dist/Release32/
else
	echo "WARNING: Couldn't find d3dcompiler_47.dll from Windows Kits redist.";
fi

# Copy associated files that should be included with the distribution
cp LICENSE.md Documentation/htmlhelp/*.chm dist/Release64/
cp LICENSE.md Documentation/htmlhelp/*.chm dist/Release32/

# Copy in appropriate plugins folder if they exist
if [ -d plugins-win64 ]; then
	cp -R plugins-win64/ dist/Release64/plugins
else
	echo "WARNING: x64 plugins missing, download and extract https://renderdoc.org/plugins.zip in root";
fi;

if [ -d plugins-win32 ]; then
	cp -R plugins-win32/ dist/Release32/plugins
else
	echo "WARNING: x86 plugins missing, download and extract https://renderdoc.org/plugins.zip in root";
fi

# Delete new VS2015 incremental pdb files, these are just build artifacts
# and aren't needed for later symbol resolution etc
find dist/Release{32,64}/ -iname '*.ipdb' -exec rm '{}' \;
find dist/Release{32,64}/ -iname '*.iobj' -exec rm '{}' \;

# Copy in any android APKs that were built
mkdir -p dist/Release64/plugins/android/
if ls build-android-* > /dev/null; then
	find build-android-* -iname 'org.renderdoc.renderdoccmd.*.apk' -exec cp '{}' dist/Release64/plugins/android ';'
else
	echo "WARNING: No android builds found, expected build-android-arm32 and build-android-arm64";
fi

# Copy in android adb and patching requirements
if [ -f plugins-android/adb.exe ]; then
	cp -R plugins-android/* dist/Release64/plugins/android/;
else
	echo "WARNING: Couldn't find android dependency (adb.exe and friends)";
	echo "         These files must be in plugins-android/ in the root and";
	echo "         MUST be built locally from an AOSP checkout, not from a";
	echo "         distributed android SDK due to licensing concerns.";
fi

# Generate a debug key for signing purposes
if [ -f "$JAVA_HOME/bin/keytool.exe" ] && [ -d dist/Release64/plugins/android ]; then
	"$JAVA_HOME/bin/keytool.exe" -genkey -keystore dist/Release64/plugins/android/renderdoc.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=, OU=, O=, L=,  S=, C="
elif [ -f "$JAVA_HOME/bin/keytool" ] && [ -d dist/Release64/plugins/android ]; then
	"$JAVA_HOME/bin/keytool" -genkey -keystore dist/Release64/plugins/android/renderdoc.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=, OU=, O=, L=,  S=, C="
fi

if [ -d dist/Release64/plugins/android ]; then
	cp -R dist/Release64/plugins/android dist/Release32/plugins/
fi

# Make a copy of the main distribution folder that has PDBs
cp -R dist/Release64 dist/ReleasePDBs64
cp -R dist/Release32 dist/ReleasePDBs32

# Remove all pdbs
find dist/Release{32,64}/ -iname '*.pdb' -exec rm '{}' \;

# Remove any build associated files that might have gotten dumped in the folders
rm -f dist/Release{32,64}/*.{exp,lib,metagen,xml} dist/Release{32,64}/*.vshost.*

# Delete all but xml files from PDB folder as well (large files, and not useful)
rm -f dist/ReleasePDBs{32,64}/*.{exp,lib,metagen} dist/Release{32,64}/*.vshost.*

# In the 64bit release folder, make an x86 subfolder and copy in renderdoc 32bit
mkdir -p dist/Release64/x86
cp -R dist/Release32/{d3dcompiler_47.dll,renderdoc.dll,renderdoc.json,renderdocshim32.dll,renderdoccmd.exe,dbghelp.dll,symsrv.dll,symsrv.yes} dist/Release64/x86/
mkdir -p dist/ReleasePDBs64/x86
cp -R dist/ReleasePDBs32/{d3dcompiler_47.dll,renderdoc.dll,renderdoc.json,renderdoc.pdb,renderdocshim32.dll,renderdocshim32.pdb,renderdoccmd.exe,renderdoccmd.pdb,dbghelp.dll,symsrv.dll,symsrv.yes} dist/ReleasePDBs64/x86/

VERSION=`grep -E "#define RENDERDOC_VERSION_(MAJOR|MINOR)" renderdoc/api/replay/version.h | tr -dc '[0-9\n]' | tr '\n' '.' | grep -Eo '[0-9]+\.[0-9]+'`

export RENDERDOC_VERSION="${VERSION}"

# Ensure this variable passes through to windows on WSL
export WSLENV=$WSLENV:RENDERDOC_VERSION

"$WIX/bin/candle.exe" -o dist/Installer32.wixobj util/installer/Installer32.wxs
"$WIX/bin/light.exe" -ext WixUIExtension -sw1076 -loc util/installer/customtext.wxl -o dist/Installer32.msi dist/Installer32.wixobj

"$WIX/bin/candle.exe" -o dist/Installer64.wixobj util/installer/Installer64.wxs
"$WIX/bin/light.exe" -ext WixUIExtension -sw1076 -loc util/installer/customtext.wxl -o dist/Installer64.msi dist/Installer64.wixobj

rm -f dist/*.wixobj dist/*.wixpdb

popd # $REPO_ROOT

rm -rf "${REPO_ROOT}"/package
mkdir "${REPO_ROOT}"/package
pushd "${REPO_ROOT}"/package

cp -R "${REPO_ROOT}"/dist/Release32 ${FILENAME}_32
cp -R "${REPO_ROOT}"/dist/Release64 ${FILENAME}_64
zip -r ${FILENAME}_32.zip ${FILENAME}_32/
zip -r ${FILENAME}_64.zip ${FILENAME}_64/
gpg -o ${FILENAME}_32.zip.sig --detach-sign --armor ${FILENAME}_32.zip
gpg -o ${FILENAME}_64.zip.sig --detach-sign --armor ${FILENAME}_64.zip

if [ -f "${REPO_ROOT}"/dist/Installer32.msi ]; then

	cp "${REPO_ROOT}"/dist/Installer32.msi ${FILENAME}_32.msi
	cp "${REPO_ROOT}"/dist/Installer64.msi ${FILENAME}_64.msi

	gpg -o ${FILENAME}_32.msi.sig --detach-sign --armor ${FILENAME}_32.msi
	gpg -o ${FILENAME}_64.msi.sig --detach-sign --armor ${FILENAME}_64.msi

	# On windows, also sign the installers
	"${BUILD_ROOT}"/scripts/sign.sh ${FILENAME}_32.msi
	"${BUILD_ROOT}"/scripts/sign.sh ${FILENAME}_64.msi

fi;

rm -rf ${FILENAME}_32/ ${FILENAME}_64/

popd # $REPO_ROOT/package