diff --git a/spinnaker_camera_driver/cmake/download_spinnaker b/spinnaker_camera_driver/cmake/download_spinnaker index 283722a4..f64cc96b 100755 --- a/spinnaker_camera_driver/cmake/download_spinnaker +++ b/spinnaker_camera_driver/cmake/download_spinnaker @@ -39,178 +39,36 @@ import urllib logging.basicConfig(level=logging.INFO) -URL_TEMPLATES = { - 'focal': { - 'deb': 'https://packages.clearpathrobotics.com/stable/flir/Spinnaker/Ubuntu{version}/spinnaker-2.2.0.48-Ubuntu{version}-{arch}-pkg.tar.gz', - 'src': None, # if we ever have non-deb archives that require manual extraction, those package URLS will go here. - }, - 'jammy': { - 'deb': 'https://packages.clearpathrobotics.com/stable/flir/Spinnaker/Ubuntu{version}/spinnaker-3.1.0.79-Ubuntu{version}-{arch}-pkg.tar.gz', - 'src': None, # if we ever have non-deb archives that require manual extraction, those package URLS will go here - }, - 'noble': { - 'deb': 'https://pfrommer.us/Spinnaker/Ubuntu{version}/spinnaker-4.0.0.116-{arch}-pkg-{version}.tar.gz', - 'src': None, # if we ever have non-deb archives that require manual extraction, those package URLS will go here - }, -} - -ARCHS = { - 'focal': { - 'x86_64': { - 'linux_arch': 'amd64', - 'current': '20.04', - 'type': 'deb', - 'folder_name': 'spinnaker-2.2.0.48-amd64', - 'shared_library': 'opt/spinnaker/lib/', - 'debs': [ - 'libgentl_2.2.0.48_amd64.deb', - 'libspinnaker_2.2.0.48_amd64.deb', - 'libspinnaker-c_2.2.0.48_amd64.deb', - 'libspinnaker-c-dev_2.2.0.48_amd64.deb', - 'libspinnaker-dev_2.2.0.48_amd64.deb', - 'libspinvideo_2.2.0.48_amd64.deb', - 'libspinvideo-c_2.2.0.48_amd64.deb', - 'libspinvideo-c-dev_2.2.0.48_amd64.deb', - 'libspinvideo-dev_2.2.0.48_amd64.deb', - 'spinnaker_2.2.0.48_amd64.deb', - 'spinnaker-doc_2.2.0.48_amd64.deb', - 'spinupdate_2.2.0.48_amd64.deb', - 'spinupdate-dev_2.2.0.48_amd64.deb', - 'spinview-qt_2.2.0.48_amd64.deb', - 'spinview-qt-dev_2.2.0.48_amd64.deb', - ], - }, - 'armv8': { - 'linux_arch': 'arm64', - 'current': '20.04', - 'type': 'deb', - 'shared_library': 'opt/spinnaker/lib/', - 'folder_name': 'spinnaker-2.2.0.48-arm64', - 'debs': [ - 'libgentl_2.2.0.48_arm64.deb', - 'libspinnaker_2.2.0.48_arm64.deb', - 'libspinnaker-c_2.2.0.48_arm64.deb', - 'libspinnaker-c-dev_2.2.0.48_arm64.deb', - 'libspinnaker-dev_2.2.0.48_arm64.deb', - 'libspinvideo_2.2.0.48_arm64.deb', - 'libspinvideo-c_2.2.0.48_arm64.deb', - 'libspinvideo-c-dev_2.2.0.48_arm64.deb', - 'libspinvideo-dev_2.2.0.48_arm64.deb', - 'spinnaker_2.2.0.48_arm64.deb', - 'spinnaker-doc_2.2.0.48_arm64.deb', - 'spinupdate_2.2.0.48_arm64.deb', - 'spinupdate-dev_2.2.0.48_arm64.deb', - 'spinview-qt_2.2.0.48_arm64.deb', - 'spinview-qt-dev_2.2.0.48_arm64.deb', - ], - }, - }, - 'jammy': { - 'x86_64': { - 'linux_arch': 'amd64', - 'type': 'deb', - 'folder_name': 'spinnaker-3.1.0.79-amd64', - 'shared_library': 'opt/spinnaker/lib/', - 'debs': [ - 'libgentl_3.1.0.79_amd64.deb', - 'libspinnaker_3.1.0.79_amd64.deb', - 'libspinnaker-c_3.1.0.79_amd64.deb', - 'libspinnaker-c-dev_3.1.0.79_amd64.deb', - 'libspinnaker-dev_3.1.0.79_amd64.deb', - 'libspinvideo_3.1.0.79_amd64.deb', - 'libspinvideo-c_3.1.0.79_amd64.deb', - 'libspinvideo-c-dev_3.1.0.79_amd64.deb', - 'libspinvideo-dev_3.1.0.79_amd64.deb', - 'spinnaker_3.1.0.79_amd64.deb', - 'spinnaker-doc_3.1.0.79_amd64.deb', - 'spinupdate_3.1.0.79_amd64.deb', - 'spinupdate-dev_3.1.0.79_amd64.deb', - 'spinview-qt_3.1.0.79_amd64.deb', - 'spinview-qt-dev_3.1.0.79_amd64.deb', - ], - }, - 'armv8': { - 'linux_arch': 'arm64', - 'type': 'deb', - 'shared_library': 'opt/spinnaker/lib/', - 'folder_name': 'spinnaker-3.1.0.79-arm64', - 'debs': [ - 'libgentl_3.1.0.79_arm64.deb', - 'libspinnaker_3.1.0.79_arm64.deb', - 'libspinnaker-c_3.1.0.79_arm64.deb', - 'libspinnaker-c-dev_3.1.0.79_arm64.deb', - 'libspinnaker-dev_3.1.0.79_arm64.deb', - 'libspinvideo_3.1.0.79_arm64.deb', - 'libspinvideo-c_3.1.0.79_arm64.deb', - 'libspinvideo-c-dev_3.1.0.79_arm64.deb', - 'libspinvideo-dev_3.1.0.79_arm64.deb', - 'spinnaker_3.1.0.79_arm64.deb', - 'spinnaker-doc_3.1.0.79_arm64.deb', - 'spinupdate_3.1.0.79_arm64.deb', - 'spinupdate-dev_3.1.0.79_arm64.deb', - 'spinview-qt_3.1.0.79_arm64.deb', - 'spinview-qt-dev_3.1.0.79_arm64.deb', - ], - }, - }, - 'noble': { - 'x86_64': { - 'linux_arch': 'amd64', - 'type': 'deb', - 'folder_name': 'spinnaker-4.0.0.116-amd64', - 'shared_library': 'opt/spinnaker/lib/', - 'debs': [ - 'libgentl_4.0.0.116_amd64.deb', - 'libspinnaker_4.0.0.116_amd64.deb', - 'libspinnaker-c_4.0.0.116_amd64.deb', - 'libspinnaker-c-dev_4.0.0.116_amd64.deb', - 'libspinnaker-dev_4.0.0.116_amd64.deb', - 'spinnaker_4.0.0.116_amd64.deb', - 'spinnaker-doc_4.0.0.116_amd64.deb', - ], - }, - 'armv8': { - 'linux_arch': 'arm64', - 'type': 'deb', - 'shared_library': 'opt/spinnaker/lib/', - 'folder_name': 'spinnaker-4.0.0.116-arm64', - 'debs': [ - 'libgentl_4.0.0.116_amd64.deb', - 'libspinnaker_4.0.0.116_amd64.deb', - 'libspinnaker-c_4.0.0.116_amd64.deb', - 'libspinnaker-c-dev_4.0.0.116_amd64.deb', - 'libspinnaker-dev_4.0.0.116_amd64.deb', - 'spinnaker_4.0.0.116_amd64.deb', - 'spinnaker-doc_4.0.0.116_amd64.deb', - ], - }, - }, -} - - OS_LIBRARY_VERSION = { 'focal': '20.04', 'jammy': '22.04', 'noble': '24.04', } +ARCH_LINUX_ARCH = { + 'x86_64': 'amd64', + 'armv8': 'arm64', +} + arch = sys.argv[1] destination_folder = sys.argv[2] os_code_name = sys.argv[3] +spinnaker_version='4.2.0.46' - +linux_arch = ARCH_LINUX_ARCH[arch] os_version = OS_LIBRARY_VERSION[os_code_name] -my_arch = ARCHS[os_code_name][arch] -archive_url = URL_TEMPLATES[os_code_name][my_arch['type']].format( - arch=my_arch['linux_arch'], version=os_version -) -folder_name = my_arch['folder_name'] -shared_library = my_arch['shared_library'] +archive_url = f'https://pfrommer.us/Spinnaker/spinnaker-{spinnaker_version}-{linux_arch}-pkg-{os_version}.tar.gz' +print('archive url: ', archive_url) +folder_name = f'spinnaker-{spinnaker_version}-{linux_arch}' + +print('CPU architecture is ', arch) +print('linux arch is ', linux_arch) +print('OS code name is ', os_code_name) +print('OS version is ', os_version) +print('Destination folder is ', destination_folder) -print('CPU architecture is %s', arch) -print('OS code name is %s', os_code_name) -print('Destination folder is %s', destination_folder) +spinnaker_base = 'opt/spinnaker/lib' if not os.path.exists(os.path.join(os.getcwd(), folder_name)): cj = http.cookiejar.CookieJar() @@ -219,13 +77,12 @@ if not os.path.exists(os.path.join(os.getcwd(), folder_name)): print('Downloading SDK archive from {0}...'.format(archive_url)) resp = opener.open(archive_url) - print('Unpacking tarball.') with tarfile.open(mode='r:gz', fileobj=io.BytesIO(resp.read())) as tar: tar.extractall() - print('Unpacking debs.') debs = glob.glob(os.path.join(os.getcwd(), folder_name, '*.deb')) + unpack_dir = os.path.join(os.getcwd()) if not os.path.exists(unpack_dir): os.makedirs(unpack_dir) @@ -237,11 +94,11 @@ if not os.path.exists(os.path.join(os.getcwd(), folder_name)): print('Copying libraries to {0}'.format(destination_folder)) if not os.path.exists(destination_folder): os.makedirs(destination_folder) - libs = glob.glob(os.path.join(os.getcwd(), 'opt/spinnaker/lib', 'libSpinnaker*.so*')) - libs += glob.glob(os.path.join(os.getcwd(), 'opt/spinnaker/lib', 'libG*.so*')) - libs += glob.glob(os.path.join(os.getcwd(), 'opt/spinnaker/lib', 'lib*Parser*.so*')) - libs += glob.glob(os.path.join(os.getcwd(), 'opt/spinnaker/lib', 'libLog*.so*')) - libs += glob.glob(os.path.join(os.getcwd(), 'opt/spinnaker/lib', 'libNodeMapData*.so*')) + libs = glob.glob(os.path.join(os.getcwd(), spinnaker_base, 'libSpinnaker*.so*')) + libs += glob.glob(os.path.join(os.getcwd(), spinnaker_base, 'libG*.so*')) + libs += glob.glob(os.path.join(os.getcwd(), spinnaker_base, 'lib*Parser*.so*')) + libs += glob.glob(os.path.join(os.getcwd(), spinnaker_base, 'libLog*.so*')) + libs += glob.glob(os.path.join(os.getcwd(), spinnaker_base, 'libNodeMapData*.so*')) for lib in libs: print('Copying: {}'.format(os.path.basename(lib))) shutil.copyfile(lib, os.path.join(destination_folder, os.path.basename(lib))) diff --git a/spinnaker_camera_driver/package.xml b/spinnaker_camera_driver/package.xml index 1c479eed..226f8b08 100644 --- a/spinnaker_camera_driver/package.xml +++ b/spinnaker_camera_driver/package.xml @@ -24,6 +24,7 @@ libusb-1.0-dev ffmpeg + libomp-dev yaml-cpp