diff options
Diffstat (limited to 'store/osandarch.py')
-rw-r--r-- | store/osandarch.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/store/osandarch.py b/store/osandarch.py new file mode 100644 index 0000000..5e7c3a1 --- /dev/null +++ b/store/osandarch.py @@ -0,0 +1,76 @@ +############################################################################# +## +## Copyright (C) 2018 Pelagicore AG +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the Neptune Deployment Server +## +## $QT_BEGIN_LICENSE:GPL-QTAS$ +## Commercial License Usage +## Licensees holding valid commercial Qt Automotive Suite licenses may use +## this file in accordance with the commercial license agreement provided +## with the Software or, alternatively, in accordance with the terms +## contained in a written agreement between you and The Qt Company. For +## licensing terms and conditions see https://www.qt.io/terms-conditions. +## For further information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 or (at your option) any later version +## approved by the KDE Free Qt Foundation. The licenses are as published by +## the Free Software Foundation and appearing in the file LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +## SPDX-License-Identifier: GPL-3.0 +## +############################################################################# + +# check for file type here. +# those are expected types +# ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.18, not stripped +# ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, not stripped +# ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped +# Mach-O 64-bit x86_64 dynamically linked shared library +# Mach-O 64-bit x86_64 executable +# Mach-O universal binary with 2 architectures: [x86_64: Mach-O 64-bit x86_64 bundle] [i386: Mach-O i386 bundle] [] +# PE32+ executable (console) x86-64, for MS Windows +# PE32+ executable (DLL) (console) x86-64, for MS Windows +# PE32+ executable (DLL) (GUI) x86-64, for MS Windows +# PE32+ executable (GUI) x86-64, for MS Windows + +def getOsArch(str): + os = None + arch = None + fmt = None + if str.startswith("ELF "): + os = "Linux" + arch = str.split(',') + arch = arch[1] + fmt = "elf" + elif str.startswith("Mach-O "): + os = "macOS" + if " universal " in str: + # Universal binary - not supported + raise Exception("Universal binaries are not supported in packages") + else: + arch = str.split(' ') + arch = arch[2] + fmt = "mach_o" + elif str.startswith("PE32+ ") or str.startswith("PE32 "): + os = "Windows" + arch = str.split(',') + arch = arch[0] # Take first part + arch = arch.split(' ') + arch = arch[-1] # Take last element + fmt = "pe32" + if arch: + arch = arch.replace('_', '-') + result = {'os': os, 'arch': arch, 'format': fmt } + if os: + return result + else: + return None |