diff options
Diffstat (limited to 'build_files/buildbot/codesign/linux_code_signer.py')
-rw-r--r-- | build_files/buildbot/codesign/linux_code_signer.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/build_files/buildbot/codesign/linux_code_signer.py b/build_files/buildbot/codesign/linux_code_signer.py new file mode 100644 index 00000000000..f1523851eb7 --- /dev/null +++ b/build_files/buildbot/codesign/linux_code_signer.py @@ -0,0 +1,72 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> + +# NOTE: This is a no-op signer (since there isn't really a procedure to sign +# Linux binaries yet). Used to debug and verify the code signing routines on +# a Linux environment. + +import logging + +from pathlib import Path +from typing import List + +from codesign.absolute_and_relative_filename import AbsoluteAndRelativeFileName +from codesign.base_code_signer import BaseCodeSigner + +logger = logging.getLogger(__name__) +logger_server = logger.getChild('server') + + +class LinuxCodeSigner(BaseCodeSigner): + def is_active(self) -> bool: + """ + Check whether this signer is active. + + if it is inactive, no files will be signed. + + Is used to be able to debug code signing pipeline on Linux, where there + is no code signing happening in the actual buildbot and release + environment. + """ + return False + + def check_file_is_to_be_signed( + self, file: AbsoluteAndRelativeFileName) -> bool: + if file.relative_filepath == Path('blender'): + return True + if (file.relative_filepath.parts()[-3:-1] == ('python', 'bin') and + file.relative_filepath.name.startwith('python')): + return True + if file.relative_filepath.suffix == '.so': + return True + return False + + def collect_files_to_sign(self, path: Path) \ + -> List[AbsoluteAndRelativeFileName]: + if not self.is_active(): + return [] + + return super().collect_files_to_sign(path) + + def sign_all_files(self, files: List[AbsoluteAndRelativeFileName]) -> None: + num_files = len(files) + for file_index, file in enumerate(files): + logger.info('Server: Signed file [%d/%d] %s', + file_index + 1, num_files, file.relative_filepath) |