Compare commits

..

2 Commits

Author SHA1 Message Date
Giacomo Cusinato
5d282f3849 fix: bundle theia native dependencies with stricter permissions 2025-11-05 16:37:01 +01:00
Giacomo Cusinato
2f7667136e chore: remove allow-dyld-environment-variables entitlement 2025-11-05 11:06:14 +01:00
5 changed files with 25 additions and 6 deletions

View File

@@ -172,7 +172,7 @@
],
"arduino": {
"arduino-cli": {
"version": "1.3.1"
"version": "1.2.0"
},
"arduino-fwuploader": {
"version": "2.4.1"

View File

@@ -1139,5 +1139,4 @@ export enum LibraryLocation {
LIBRARY_LOCATION_PLATFORM_BUILTIN = 2,
LIBRARY_LOCATION_REFERENCED_PLATFORM_BUILTIN = 3,
LIBRARY_LOCATION_UNMANAGED = 4,
LIBRARY_LOCATION_PROFILE = 5,
}

View File

@@ -8652,8 +8652,7 @@ proto.cc.arduino.cli.commands.v1.LibraryLocation = {
LIBRARY_LOCATION_USER: 1,
LIBRARY_LOCATION_PLATFORM_BUILTIN: 2,
LIBRARY_LOCATION_REFERENCED_PLATFORM_BUILTIN: 3,
LIBRARY_LOCATION_UNMANAGED: 4,
LIBRARY_LOCATION_PROFILE: 5
LIBRARY_LOCATION_UNMANAGED: 4
};
goog.object.extend(exports, proto.cc.arduino.cli.commands.v1);

View File

@@ -8,7 +8,5 @@
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
</dict>
</plist>

View File

@@ -1,5 +1,7 @@
const path = require('node:path');
const fs = require('fs');
const webpack = require('webpack');
const TheiaNativeWebpackPlugin = require('@theia/native-webpack-plugin');
const frontend = require('./gen-webpack.config');
const backend = require('./gen-webpack.node.config');
const {
@@ -39,6 +41,27 @@ backend.config.entry['parcel-watcher'] = {
},
};
// Override Theia native dependency bundler to assign stricter file permissions (chmod 755)
// https://github.com/eclipse-theia/theia/blob/9a52544fb4c1ea1d3d0d6bcbe106b97184279030/dev-packages/native-webpack-plugin/src/native-webpack-plugin.ts#L149
class NativeWebpackPlugin extends TheiaNativeWebpackPlugin {
// Override the method that writes/copies files
async copyExecutable(source, target) {
const targetDirectory = path.dirname(target);
await fs.promises.mkdir(targetDirectory, { recursive: true });
await fs.promises.copyFile(source, target);
await fs.promises.chmod(target, 0o755);
}
}
backend.config.plugins.push(new NativeWebpackPlugin({
out: 'native',
trash: true,
ripgrep: true,
pty: true,
nativeBindings: {
drivelist: 'drivelist/build/Release/drivelist.node',
},
}));
// Use a customized backend main that can enable the file logger in bundled mode.
backend.config.entry['main'] = require.resolve('./arduino-ide-backend-main.js');