From 1a71dc25a8425ab267e0c3d7987329ec983300f7 Mon Sep 17 00:00:00 2001 From: Ben McMorran Date: Fri, 14 Jan 2022 17:46:16 -0800 Subject: [PATCH 1/3] Mark serial monitor as executable on Mac and Linux --- azure-pipelines.yml | 2 ++ build/markExecutableFiles.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 build/markExecutableFiles.py diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 2d1f3b2e..ba99a264 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -115,6 +115,8 @@ steps: includeRootFolder: false archiveType: zip archiveFile: $(Build.StagingDirectory)\vscode-arduino.vsix + - script: python .\build\markExecutableFiles.py + displayName: Make serial monitor executable - task: MSBuild@1 displayName: Sign VSIX inputs: diff --git a/build/markExecutableFiles.py b/build/markExecutableFiles.py new file mode 100644 index 00000000..aaeed1ca --- /dev/null +++ b/build/markExecutableFiles.py @@ -0,0 +1,31 @@ +import os +import zipfile + +input_archive_path = f"{os.getenv('BUILD_STAGINGDIRECTORY')})/vscode-arduino.vsix" +output_archive_path = f"{os.getenv('BUILD_STAGINGDIRECTORY')})/vscode-arduino-out.vsix" + +filenames = [ + "extension/out/serial-monitor-cli/darwin/main", + "extension/out/serial-monitor-cli/linux/main" +] + +input_archive = zipfile.ZipFile(input_archive_path, 'r') +output_archive = zipfile.ZipFile(output_archive_path, 'w') + +executable_count = 0 +for info in input_archive.infolist(): + data = input_archive.read(info) + if info.filename in filenames: + # Magic number from from https://stackoverflow.com/a/48435482 + info.external_attr = 0o100755 << 16 + executable_count += 1 + output_archive.writestr(info, data) + +if executable_count != len(filenames): + raise Exception(f'Expected to find {len(filenames)} executables but only found {executable_count}') + +input_archive.close() +output_archive.close() + +os.replace(output_archive_path, input_archive_path) +os.remove(output_archive_path) From 274367aff396e834e004e0a9b09ae2930f40988b Mon Sep 17 00:00:00 2001 From: Ben McMorran Date: Fri, 14 Jan 2022 17:58:41 -0800 Subject: [PATCH 2/3] Fix typo --- build/markExecutableFiles.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build/markExecutableFiles.py b/build/markExecutableFiles.py index aaeed1ca..941dec75 100644 --- a/build/markExecutableFiles.py +++ b/build/markExecutableFiles.py @@ -1,8 +1,9 @@ import os import zipfile -input_archive_path = f"{os.getenv('BUILD_STAGINGDIRECTORY')})/vscode-arduino.vsix" -output_archive_path = f"{os.getenv('BUILD_STAGINGDIRECTORY')})/vscode-arduino-out.vsix" +staging_directory = os.getenv('BUILD_STAGINGDIRECTORY') +input_archive_path = f"{staging_directory}/vscode-arduino.vsix" +output_archive_path = f"{staging_directory}/vscode-arduino-out.vsix" filenames = [ "extension/out/serial-monitor-cli/darwin/main", From 152e98902205fe28a4d1f6ec285115e6d11152a4 Mon Sep 17 00:00:00 2001 From: Ben McMorran Date: Fri, 14 Jan 2022 18:06:53 -0800 Subject: [PATCH 3/3] os.remove() isn't needed --- build/markExecutableFiles.py | 1 - 1 file changed, 1 deletion(-) diff --git a/build/markExecutableFiles.py b/build/markExecutableFiles.py index 941dec75..89213be5 100644 --- a/build/markExecutableFiles.py +++ b/build/markExecutableFiles.py @@ -29,4 +29,3 @@ output_archive.close() os.replace(output_archive_path, input_archive_path) -os.remove(output_archive_path)