diff --git a/installer/installbuilder/swift-pilotclient.xml b/installer/installbuilder/swift-pilotclient.xml
index 8557a700b..3e5f5c462 100644
--- a/installer/installbuilder/swift-pilotclient.xml
+++ b/installer/installbuilder/swift-pilotclient.xml
@@ -11,23 +11,55 @@ This installs the binaries to run all swift applications.
bin
${installdir}/bin
bin_linux
- linux linux-x64 osx
+ linux linux-x64
1
../../dist/bin/swiftcore*
+ */*.debug
1
../../dist/bin/swiftdata*
+ */*.debug
1
../../dist/bin/swiftguistd*
+ */*.debug
1
../../dist/bin/swiftlauncher*
+ */*.debug
+
+
+
+
+ bin
+ ${installdir}/bin
+ bin_osx
+ osx
+
+
+ 1
+ ../../dist/bin/swiftcore*
+ */*.dSYM
+
+
+ 1
+ ../../dist/bin/swiftdata*
+ */*.dSYM
+
+
+ 1
+ ../../dist/bin/swiftguistd*
+ */*.dSYM
+
+
+ 1
+ ../../dist/bin/swiftlauncher*
+ */*.dSYM
@@ -90,31 +122,75 @@ This installs the binaries to run all swift applications.
lib
${installdir}/lib
lib_linux
- linux linux-x64 osx
+ linux linux-x64
1
../../dist/lib/libblackcore*
+ */*.debug
1
../../dist/lib/libblackgui*
+ */*.debug
1
../../dist/lib/libblackinput*
+ */*.debug
1
../../dist/lib/libblackmisc*
+ */*.debug
1
../../dist/lib/libblacksound*
+ */*.debug
1
../../dist/lib/libsimulatorplugincommon*
+ */*.debug
+
+
+
+
+ lib
+ ${installdir}/lib
+ lib_osx
+ osx
+
+
+ 1
+ ../../dist/lib/libblackcore*.dylib
+ */*.dSYM
+
+
+ 1
+ ../../dist/lib/libblackgui*.dylib
+ */*.dSYM
+
+
+ 1
+ ../../dist/lib/libblackinput*.dylib
+ */*.dSYM
+
+
+ 1
+ ../../dist/lib/libblackmisc*.dylib
+ */*.dSYM
+
+
+ 1
+ ../../dist/lib/libblacksound*.dylib
+ */*.dSYM
+
+
+ 1
+ ../../dist/lib/libsimulatorplugincommon*.dylib
+ */*.dSYM
diff --git a/installer/installbuilder/swift-plugin-simulators.xml b/installer/installbuilder/swift-plugin-simulators.xml
index 51d60e1a1..21287dbb8 100644
--- a/installer/installbuilder/swift-plugin-simulators.xml
+++ b/installer/installbuilder/swift-plugin-simulators.xml
@@ -119,6 +119,7 @@ This plugin acts as the interface between swift and X-Plane
1
../../dist/bin/plugins/simulator/*simulatorxplane*
+ */*.pdb;*/*.debug;*/*.dSYM
@@ -142,6 +143,7 @@ This plugin acts as the interface between swift and FlightGear
1
../../dist/bin/plugins/simulator/*simulatorflightgear*
+ */*.pdb;*/*.debug;*/*.dSYM
@@ -165,6 +167,7 @@ This plugin emulates a running simulator. Use this for testing swift only
1
../../dist/bin/plugins/simulator/*simulatoremulated*
+ */*.pdb;*/*.debug;*/*.dSYM
diff --git a/installer/installbuilder/swift-plugin-weatherdata.xml b/installer/installbuilder/swift-plugin-weatherdata.xml
index bf1f8c04d..265bfd774 100644
--- a/installer/installbuilder/swift-plugin-weatherdata.xml
+++ b/installer/installbuilder/swift-plugin-weatherdata.xml
@@ -22,6 +22,7 @@
1
../../dist/bin/plugins/weatherdata/*weatherdatagfs*
+ */*.pdb;*/*.debug;*/*.dSYM
diff --git a/installer/installbuilder/swift-samples.xml b/installer/installbuilder/swift-samples.xml
index 437c58447..31029475b 100644
--- a/installer/installbuilder/swift-samples.xml
+++ b/installer/installbuilder/swift-samples.xml
@@ -15,6 +15,7 @@
1
../../dist/bin/sample*
+ */*.pdb;*/*.debug;*/*.dSYM
diff --git a/mkspecs/features/common_pre.prf b/mkspecs/features/common_pre.prf
index ed90493ef..b83330a22 100644
--- a/mkspecs/features/common_pre.prf
+++ b/mkspecs/features/common_pre.prf
@@ -77,6 +77,10 @@ swiftConfig(releaseWithDebugInfo) {
QMAKE_CXXFLAGS_RELEASE *= /Z7
QMAKE_LFLAGS_RELEASE *= /DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF
}
+ unix {
+ CONFIG += force_debug_info
+ CONFIG += separate_debug_info
+ }
}
swiftConfig(profileRelease) {
msvc {
diff --git a/scripts/jenkins.py b/scripts/jenkins.py
index 7261a89a5..9b0b6801b 100644
--- a/scripts/jenkins.py
+++ b/scripts/jenkins.py
@@ -19,7 +19,7 @@ import requests
import subprocess
import sys
import datastore
-import symbolstore
+import tarfile
from lib.util import get_vs_env
if sys.version_info < (3, 0):
@@ -149,16 +149,46 @@ class Builder:
build_path = self._get_swift_build_path()
os.chdir(build_path)
print('Creating symbols')
- symbol_path = path.abspath(path.join(build_path, 'symbols'))
binary_path = path.abspath(path.join(build_path, 'out'))
- symbolstore.Dumper.global_init()
- dumper = symbolstore.get_platform_specific_dumper(dump_syms=self.dump_syms, symbol_path=symbol_path)
- dumper.process(binary_path)
- dumper.finish()
+
os_map = {'Linux': 'linux', 'Darwin': 'macos', 'Windows': 'windows'}
- tar_filename = '-'.join(['swiftsymbols', os_map[platform.system()], self.word_size, self.version]) + '.tar.gz'
+ tar_filename = '-'.join(
+ ['swiftsymbols', os_map[platform.system()], self.word_size, self.version]) + '.tar.gz'
tar_path = path.abspath(path.join(self._get_swift_source_path(), tar_filename))
- dumper.pack(tar_path)
+ tar = tarfile.open(tar_path, "w:gz")
+
+ ignore_list = ['sample', 'test', 'win', 'liblin.so', 'libmac.dylib']
+ for root, dirs, files in os.walk(binary_path):
+ if platform.system() == 'Windows':
+ for f in files:
+ if f.endswith('.pdb') and not f.startswith(tuple(ignore_list)):
+ symbol_path = path.abspath(path.join(root, f))
+ print('Adding ' + symbol_path)
+ tar.add(symbol_path, f)
+ if self.word_size == '64':
+ # Add also *.exe/*.dll with the same name if existing
+ exe_path = symbol_path.replace('.pdb', '.exe')
+ if os.path.isfile(exe_path):
+ print('Adding ' + exe_path)
+ tar.add(exe_path, f.replace('.pdb', '.exe'))
+ dll_path = symbol_path.replace('.pdb', '.dll')
+ if os.path.isfile(dll_path):
+ print('Adding ' + dll_path)
+ tar.add(dll_path, f.replace('.pdb', '.dll'))
+ elif platform.system() == 'Darwin':
+ for d in dirs:
+ if d.endswith('.dSYM') and not d.startswith(tuple(ignore_list)):
+ symbol_path = path.abspath(path.join(root, d))
+ print('Adding ' + symbol_path)
+ tar.add(symbol_path, d)
+ elif platform.system() == 'Linux':
+ for f in files:
+ if f.endswith('.debug') and not f.startswith(tuple(ignore_list)):
+ symbol_path = path.abspath(path.join(root, f))
+ print('Adding ' + symbol_path)
+ tar.add(symbol_path, f)
+ tar.close()
+
if upload_symbols:
self.__upload_symbol_files(tar_path)