Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'build_files/buildbot/codesign/linux_code_signer.py')
-rw-r--r--build_files/buildbot/codesign/linux_code_signer.py72
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)