Compare commits

..

10 Commits

Author SHA1 Message Date
neochaos42
2d76e76193 Update test-javascript.yml 2025-04-19 14:42:23 -05:00
neochaos42
10da5e852f Update build.yml 2025-04-17 02:45:50 -05:00
neochaos42
c30be536b2 Update build.yml 2025-04-17 02:42:13 -05:00
neochaos42
2c0bcba812 Update build.yml 2025-04-16 22:36:50 -05:00
neochaos42
27b1cb528e Update build.yml 2025-04-16 21:26:14 -05:00
neochaos42
c5af77de9c Update build.yml 2025-04-16 19:03:29 -05:00
neochaos42
d99e577c93 Update build.yml 2025-04-16 19:02:05 -05:00
neochaos42
937c2746fc Update build.yml 2025-04-16 18:46:10 -05:00
neochaos42
56b0a2d66d Merge branch 'arduino:main' into main 2025-04-16 18:32:15 -05:00
neochaos42
4c4e950d3d Update build.yml
Add linux arm 64 builds
2025-03-27 00:34:05 -05:00
17 changed files with 55 additions and 117 deletions

View File

@@ -133,11 +133,22 @@ env:
name: macOS_arm64_dmg name: macOS_arm64_dmg
- path: '*macOS_arm64.zip' - path: '*macOS_arm64.zip'
name: macOS_arm64_zip name: macOS_arm64_zip
- config:
name: ARM Ubuntu 22.04
runs-on: ubuntu-22.04-arm
container: |
null
job-transfer-artifact-suffix: ARM_64bit
mergeable-channel-file: 'true'
artifacts:
- path: '*Linux_arm64.zip'
name: Linux_arm64_zip
- path: '*Linux_arm64.AppImage'
name: Linux_arm64_app_image
PAID_RUNNER_BUILD_DATA: | PAID_RUNNER_BUILD_DATA: |
# This system was implemented to allow selective use of paid GitHub-hosted runners, due to the Apple Silicon runner # This system was implemented to allow selective use of paid GitHub-hosted runners, due to the Apple Silicon runner
# incurring a charge at that time. Free Apple Silicon runners are now available so the configuration was moved to # incurring a charge at that time. Free Apple Silicon runners are now available so the configuration was moved to
# `BASE_BUILD_DATA`, but the system was left in place for future use. # `BASE_BUILD_DATA`, but the system was left in place for future use.
jobs: jobs:
run-determination: run-determination:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -160,9 +171,7 @@ jobs:
# There is no need to run the other jobs. # There is no need to run the other jobs.
RESULT="false" RESULT="false"
fi fi
echo "result=$RESULT" >> $GITHUB_OUTPUT echo "result=$RESULT" >> $GITHUB_OUTPUT
build-type-determination: build-type-determination:
needs: run-determination needs: run-determination
if: needs.run-determination.outputs.result == 'true' if: needs.run-determination.outputs.result == 'true'
@@ -199,13 +208,11 @@ jobs:
is_nightly="false" is_nightly="false"
channel_name="nightly" channel_name="nightly"
fi fi
echo "is-release=$is_release" >> $GITHUB_OUTPUT echo "is-release=$is_release" >> $GITHUB_OUTPUT
echo "is-nightly=$is_nightly" >> $GITHUB_OUTPUT echo "is-nightly=$is_nightly" >> $GITHUB_OUTPUT
echo "channel-name=$channel_name" >> $GITHUB_OUTPUT echo "channel-name=$channel_name" >> $GITHUB_OUTPUT
# Only attempt upload to Amazon S3 if the credentials are available. # Only attempt upload to Amazon S3 if the credentials are available.
echo "publish-to-s3=${{ secrets.AWS_ROLE_ARN != '' }}" >> $GITHUB_OUTPUT echo "publish-to-s3=${{ secrets.AWS_ROLE_ARN != '' }}" >> $GITHUB_OUTPUT
select-targets: select-targets:
needs: build-type-determination needs: build-type-determination
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -232,7 +239,6 @@ jobs:
--output-format json \ --output-format json \
'[.[].config]' '[.[].config]'
)" )"
artifact_matrix="$( artifact_matrix="$(
( (
echo "${{ env.BASE_BUILD_DATA }}"; echo "${{ env.BASE_BUILD_DATA }}";
@@ -242,11 +248,9 @@ jobs:
--output-format json \ --output-format json \
'map(.artifacts[] + (.config | pick(["job-transfer-artifact-suffix"])))' 'map(.artifacts[] + (.config | pick(["job-transfer-artifact-suffix"])))'
)" )"
# The build matrix produces two macOS jobs (x86 and ARM) so the "channel update info files" # The build matrix produces two macOS jobs (x86 and ARM) so the "channel update info files"
# generated by each must be merged. # generated by each must be merged.
merge_channel_files="true" merge_channel_files="true"
else else
build_matrix="$( build_matrix="$(
echo "${{ env.BASE_BUILD_DATA }}" | \ echo "${{ env.BASE_BUILD_DATA }}" | \
@@ -254,31 +258,25 @@ jobs:
--output-format json \ --output-format json \
'[.[].config]' '[.[].config]'
)" )"
artifact_matrix="$( artifact_matrix="$(
echo "${{ env.BASE_BUILD_DATA }}" | \ echo "${{ env.BASE_BUILD_DATA }}" | \
yq \ yq \
--output-format json \ --output-format json \
'map(.artifacts[] + (.config | pick(["job-transfer-artifact-suffix"])))' 'map(.artifacts[] + (.config | pick(["job-transfer-artifact-suffix"])))'
)" )"
merge_channel_files="false" merge_channel_files="false"
fi fi
# Set workflow step outputs. # Set workflow step outputs.
# See: https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings # See: https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings
delimiter="$RANDOM" delimiter="$RANDOM"
echo "build-matrix<<$delimiter" >> $GITHUB_OUTPUT echo "build-matrix<<$delimiter" >> $GITHUB_OUTPUT
echo "$build_matrix" >> $GITHUB_OUTPUT echo "$build_matrix" >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT echo "$delimiter" >> $GITHUB_OUTPUT
delimiter="$RANDOM" delimiter="$RANDOM"
echo "artifact-matrix<<$delimiter" >> $GITHUB_OUTPUT echo "artifact-matrix<<$delimiter" >> $GITHUB_OUTPUT
echo "$artifact_matrix" >> $GITHUB_OUTPUT echo "$artifact_matrix" >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT echo "$delimiter" >> $GITHUB_OUTPUT
echo "merge-channel-files=$merge_channel_files" >> $GITHUB_OUTPUT echo "merge-channel-files=$merge_channel_files" >> $GITHUB_OUTPUT
build: build:
name: build (${{ matrix.config.name }}) name: build (${{ matrix.config.name }})
needs: needs:
@@ -290,7 +288,7 @@ jobs:
# to skip passing signing credentials to electron-builder # to skip passing signing credentials to electron-builder
IS_WINDOWS_CONFIG: ${{ matrix.config.name == 'Windows' }} IS_WINDOWS_CONFIG: ${{ matrix.config.name == 'Windows' }}
INSTALLER_CERT_WINDOWS_CER: "/tmp/cert.cer" INSTALLER_CERT_WINDOWS_CER: "/tmp/cert.cer"
# We are hardcoding the path for signtool because is not present on the windows PATH env var by default. # We are hardcoding the path for signtool because it is not present on the Windows PATH env var by default.
# Keep in mind that this path could change when upgrading to a new runner version # Keep in mind that this path could change when upgrading to a new runner version
SIGNTOOL_PATH: "C:/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/x86/signtool.exe" SIGNTOOL_PATH: "C:/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/x86/signtool.exe"
WIN_CERT_PASSWORD: ${{ secrets[matrix.config.certificate-password-secret] }} WIN_CERT_PASSWORD: ${{ secrets[matrix.config.certificate-password-secret] }}
@@ -310,15 +308,17 @@ jobs:
timeout-minutes: 90 timeout-minutes: 90
steps: steps:
- name: Install Chromium (ARM only)
if: matrix.config.name == 'ARM Ubuntu 22.04'
run: sudo apt-get update && sudo apt-get install -y chromium-browser
- name: Symlink custom working directory - name: Symlink custom working directory
shell: cmd shell: cmd
if: runner.os == 'Windows' && matrix.config.working-directory if: runner.os == 'Windows' && matrix.config.working-directory
run: | run: |
if not exist "${{ matrix.config.working-directory }}" mklink /d "${{ matrix.config.working-directory }}" "C:\actions-runner\_work\arduino-ide\arduino-ide" if not exist "${{ matrix.config.working-directory }}" mklink /d "${{ matrix.config.working-directory }}" "C:\actions-runner\_work\arduino-ide\arduino-ide"
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- name: Install Node.js - name: Install Node.js
if: runner.name != 'WINDOWS-SIGN-PC' if: runner.name != 'WINDOWS-SIGN-PC'
@@ -337,7 +337,6 @@ jobs:
install \ install \
--global \ --global \
"yarn@${{ env.YARN_VERSION }}" "yarn@${{ env.YARN_VERSION }}"
- name: Install Python 3.x - name: Install Python 3.x
if: fromJSON(matrix.config.container) == null && runner.name != 'WINDOWS-SIGN-PC' if: fromJSON(matrix.config.container) == null && runner.name != 'WINDOWS-SIGN-PC'
uses: actions/setup-python@v5 uses: actions/setup-python@v5
@@ -377,15 +376,12 @@ jobs:
export CSC_KEY_PASSWORD="${{ secrets[matrix.config.certificate-password-secret] }}" export CSC_KEY_PASSWORD="${{ secrets[matrix.config.certificate-password-secret] }}"
export CSC_FOR_PULL_REQUEST=true export CSC_FOR_PULL_REQUEST=true
fi fi
npx node-gyp install npx node-gyp install
yarn install yarn install
yarn --cwd arduino-ide-extension build yarn --cwd arduino-ide-extension build
yarn --cwd electron-app rebuild yarn --cwd electron-app rebuild
yarn --cwd electron-app build yarn --cwd electron-app build
yarn --cwd electron-app package yarn --cwd electron-app package
# Both macOS jobs generate a "channel update info file" with same path and name. The second job to complete would # Both macOS jobs generate a "channel update info file" with same path and name. The second job to complete would
# overwrite the file generated by the first in the workflow artifact. # overwrite the file generated by the first in the workflow artifact.
- name: Stage channel file for merge - name: Stage channel file for merge
@@ -399,11 +395,9 @@ jobs:
mv \ mv \
"${{ env.BUILD_ARTIFACTS_PATH }}/${{ needs.build-type-determination.outputs.channel-name }}-mac.yml" \ "${{ env.BUILD_ARTIFACTS_PATH }}/${{ needs.build-type-determination.outputs.channel-name }}-mac.yml" \
"${staged_channel_files_path}/${{ needs.build-type-determination.outputs.channel-name }}-mac-${{ runner.arch }}.yml" "${staged_channel_files_path}/${{ needs.build-type-determination.outputs.channel-name }}-mac-${{ runner.arch }}.yml"
# Set workflow environment variable for use in other steps. # Set workflow environment variable for use in other steps.
# See: https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#setting-an-environment-variable # See: https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#setting-an-environment-variable
echo "STAGED_CHANNEL_FILES_PATH=$staged_channel_files_path" >> "$GITHUB_ENV" echo "STAGED_CHANNEL_FILES_PATH=$staged_channel_files_path" >> "$GITHUB_ENV"
- name: Upload staged-for-merge channel file artifact - name: Upload staged-for-merge channel file artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
if: > if: >
@@ -425,7 +419,6 @@ jobs:
shell: cmd shell: cmd
run: | run: |
rmdir /s /q "${{ matrix.config.working-directory }}\${{ env.BUILD_ARTIFACTS_PATH }}" rmdir /s /q "${{ matrix.config.working-directory }}\${{ env.BUILD_ARTIFACTS_PATH }}"
merge-channel-files: merge-channel-files:
needs: needs:
- build-type-determination - build-type-determination
@@ -439,12 +432,11 @@ jobs:
run: | run: |
# See: https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#setting-an-environment-variable # See: https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#setting-an-environment-variable
echo "CHANNEL_FILES_PATH=${{ runner.temp }}/channel-files" >> "$GITHUB_ENV" echo "CHANNEL_FILES_PATH=${{ runner.temp }}/channel-files" >> "$GITHUB_ENV"
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- name: Download staged-for-merge channel file artifacts - name: Download staged-for-merge channel file artifacts
uses: actions/download-artifact@v5 uses: actions/download-artifact@v4
with: with:
merge-multiple: true merge-multiple: true
path: ${{ env.CHANNEL_FILES_PATH }} path: ${{ env.CHANNEL_FILES_PATH }}
@@ -478,7 +470,6 @@ jobs:
run: | run: |
sudo apt-get update sudo apt-get update
sudo apt-get install -y libx11-dev libxkbfile-dev libsecret-1-dev sudo apt-get install -y libx11-dev libxkbfile-dev libsecret-1-dev
- name: Install dependencies - name: Install dependencies
run: yarn run: yarn
@@ -488,7 +479,6 @@ jobs:
./scripts/merge-channel-files.js \ ./scripts/merge-channel-files.js \
--channel "${{ needs.build-type-determination.outputs.channel-name }}" \ --channel "${{ needs.build-type-determination.outputs.channel-name }}" \
--input "${{ env.CHANNEL_FILES_PATH }}" --input "${{ env.CHANNEL_FILES_PATH }}"
- name: Upload merged channel files job transfer artifact - name: Upload merged channel files job transfer artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
@@ -513,7 +503,7 @@ jobs:
steps: steps:
- name: Download job transfer artifact that contains ${{ matrix.artifact.name }} tester build - name: Download job transfer artifact that contains ${{ matrix.artifact.name }} tester build
uses: actions/download-artifact@v5 uses: actions/download-artifact@v4
with: with:
name: ${{ env.JOB_TRANSFER_ARTIFACT_PREFIX }}${{ matrix.artifact.job-transfer-artifact-suffix }} name: ${{ env.JOB_TRANSFER_ARTIFACT_PREFIX }}${{ matrix.artifact.job-transfer-artifact-suffix }}
path: ${{ env.BUILD_ARTIFACTS_FOLDER }} path: ${{ env.BUILD_ARTIFACTS_FOLDER }}
@@ -533,7 +523,7 @@ jobs:
BODY: ${{ steps.changelog.outputs.BODY }} BODY: ${{ steps.changelog.outputs.BODY }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
with: with:
fetch-depth: 0 # To fetch all history for all branches and tags. fetch-depth: 0 # To fetch all history for all branches and tags.
@@ -555,16 +545,13 @@ jobs:
fi fi
fi fi
echo -e "$BODY" echo -e "$BODY"
# Set workflow step output # Set workflow step output
# See: https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings # See: https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings
DELIMITER="$RANDOM" DELIMITER="$RANDOM"
echo "BODY<<$DELIMITER" >> $GITHUB_OUTPUT echo "BODY<<$DELIMITER" >> $GITHUB_OUTPUT
echo "$BODY" >> $GITHUB_OUTPUT echo "$BODY" >> $GITHUB_OUTPUT
echo "$DELIMITER" >> $GITHUB_OUTPUT echo "$DELIMITER" >> $GITHUB_OUTPUT
echo "$BODY" > CHANGELOG.txt echo "$BODY" > CHANGELOG.txt
- name: Upload changelog job transfer artifact - name: Upload changelog job transfer artifact
if: needs.build-type-determination.outputs.is-nightly == 'true' if: needs.build-type-determination.outputs.is-nightly == 'true'
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
@@ -600,7 +587,7 @@ jobs:
steps: steps:
- name: Download all job transfer artifacts - name: Download all job transfer artifacts
uses: actions/download-artifact@v5 uses: actions/download-artifact@v4
with: with:
merge-multiple: true merge-multiple: true
path: ${{ env.ARTIFACTS_FOLDER }} path: ${{ env.ARTIFACTS_FOLDER }}
@@ -615,7 +602,6 @@ jobs:
- name: Publish Nightly [S3] - name: Publish Nightly [S3]
run: | run: |
aws s3 sync ${{ env.ARTIFACTS_FOLDER }} s3://${{ secrets.DOWNLOADS_BUCKET }}/arduino-ide/nightly aws s3 sync ${{ env.ARTIFACTS_FOLDER }} s3://${{ secrets.DOWNLOADS_BUCKET }}/arduino-ide/nightly
release: release:
needs: needs:
- build-type-determination - build-type-determination
@@ -643,7 +629,7 @@ jobs:
steps: steps:
- name: Download all job transfer artifacts - name: Download all job transfer artifacts
uses: actions/download-artifact@v5 uses: actions/download-artifact@v4
with: with:
merge-multiple: true merge-multiple: true
path: ${{ env.ARTIFACTS_FOLDER }} path: ${{ env.ARTIFACTS_FOLDER }}
@@ -653,7 +639,6 @@ jobs:
id: tag_name id: tag_name
run: | run: |
echo "TAG_NAME=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT echo "TAG_NAME=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Publish Release [GitHub] - name: Publish Release [GitHub]
uses: svenstaro/upload-release-action@2.9.0 uses: svenstaro/upload-release-action@2.9.0
with: with:
@@ -675,7 +660,6 @@ jobs:
if: needs.build-type-determination.outputs.publish-to-s3 == 'true' if: needs.build-type-determination.outputs.publish-to-s3 == 'true'
run: | run: |
aws s3 sync ${{ env.ARTIFACTS_FOLDER }} s3://${{ secrets.DOWNLOADS_BUCKET }}/arduino-ide aws s3 sync ${{ env.ARTIFACTS_FOLDER }} s3://${{ secrets.DOWNLOADS_BUCKET }}/arduino-ide
clean: clean:
# This job must run after all jobs that use the transfer artifact. # This job must run after all jobs that use the transfer artifact.
needs: needs:

View File

@@ -40,7 +40,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v5 uses: actions/checkout@v4
- name: Build and push to local registry - name: Build and push to local registry
uses: docker/build-push-action@v6 uses: docker/build-push-action@v6

View File

@@ -56,7 +56,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v5 uses: actions/checkout@v4
- name: Install Node.js 18.17 - name: Install Node.js 18.17
uses: actions/setup-node@v4 uses: actions/setup-node@v4

View File

@@ -65,7 +65,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v5 uses: actions/checkout@v4
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v4

View File

@@ -64,7 +64,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v5 uses: actions/checkout@v4
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v4

View File

@@ -21,7 +21,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- name: Install Node.js - name: Install Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v4

View File

@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- name: Install Node.js 18.17 - name: Install Node.js 18.17
uses: actions/setup-node@v4 uses: actions/setup-node@v4

View File

@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- name: Install Node.js 18.17 - name: Install Node.js 18.17
uses: actions/setup-node@v4 uses: actions/setup-node@v4

View File

@@ -43,7 +43,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v5 uses: actions/checkout@v4
- name: Log in to the Container registry - name: Log in to the Container registry
uses: docker/login-action@v3 uses: docker/login-action@v3

View File

@@ -27,7 +27,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v5 uses: actions/checkout@v4
- name: Download JSON schema for labels configuration file - name: Download JSON schema for labels configuration file
id: download-schema id: download-schema
@@ -106,10 +106,10 @@ jobs:
echo "flag=--dry-run" >> $GITHUB_OUTPUT echo "flag=--dry-run" >> $GITHUB_OUTPUT
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v5 uses: actions/checkout@v4
- name: Download configuration file artifacts - name: Download configuration file artifacts
uses: actions/download-artifact@v5 uses: actions/download-artifact@v4
with: with:
merge-multiple: true merge-multiple: true
pattern: ${{ env.CONFIGURATIONS_ARTIFACT_PREFIX }}* pattern: ${{ env.CONFIGURATIONS_ARTIFACT_PREFIX }}*

View File

@@ -79,10 +79,11 @@ jobs:
- macos-latest - macos-latest
- ubuntu-latest - ubuntu-latest
- windows-latest - windows-latest
- ubuntu-22.04-arm
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v4

View File

@@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- name: Install Node.js - name: Install Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v4

View File

@@ -46,9 +46,9 @@ See [**the contributor guide**](docs/CONTRIBUTING.md#contributor-guide) for more
See the [**development guide**](docs/development.md) for a technical overview of the application and instructions for building the code. See the [**development guide**](docs/development.md) for a technical overview of the application and instructions for building the code.
### Support the project ## Donations
This open source code was written by the Arduino team and is maintained on a daily basis with the help of the community. We invest a considerable amount of time in development, testing and optimization. Please consider [buying original Arduino boards](https://store.arduino.cc/) to support our work on the project. This open source code was written by the Arduino team and is maintained on a daily basis with the help of the community. We invest a considerable amount of time in development, testing and optimization. Please consider [donating](https://www.arduino.cc/en/donate/) or [sponsoring](https://github.com/sponsors/arduino) to support our work, as well as [buying original Arduino boards](https://store.arduino.cc/) which is the best way to make sure our effort can continue in the long term.
## License ## License

View File

@@ -6,20 +6,22 @@ Thanks for your interest in contributing to this project!
There are several ways you can get involved: There are several ways you can get involved:
| Type of contribution | Contribution method | | Type of contribution | Contribution method |
| ----------------------------------------- | ---------------------------------------------------------------- | | ----------------------------------------- | -------------------------------------------------------------------------------- |
| - Support<br/>- Question<br/>- Discussion | Post on the [**Arduino Forum**][forum] | | - Support<br/>- Question<br/>- Discussion | Post on the [**Arduino Forum**][forum] |
| - Bug report<br/>- Feature request | Issue report (see the guide [**here**][issues]) | | - Bug report<br/>- Feature request | Issue report (see the guide [**here**][issues]) |
| Testing | Beta testing, PR review (see the guide [**here**][beta-testing]) | | Testing | Beta testing, PR review (see the guide [**here**][beta-testing]) |
| Translation | See the guide [**here**][translate] | | Translation | See the guide [**here**][translate] |
| - Bug fix<br/>- Enhancement | Pull request (see the guide [**here**][prs]) | | - Bug fix<br/>- Enhancement | Pull request (see the guide [**here**][prs]) |
| Monetary | [Buy official products][store] | | Monetary | - [Donate][donate]<br/>- [Sponsor][sponsor]<br/>- [Buy official products][store] |
[forum]: https://forum.arduino.cc [forum]: https://forum.arduino.cc
[issues]: contributor-guide/issues.md#issue-report-guide [issues]: contributor-guide/issues.md#issue-report-guide
[beta-testing]: contributor-guide/beta-testing.md#beta-testing-guide [beta-testing]: contributor-guide/beta-testing.md#beta-testing-guide
[translate]: contributor-guide/translation.md#translator-guide [translate]: contributor-guide/translation.md#translator-guide
[prs]: contributor-guide/pull-requests.md#pull-request-guide [prs]: contributor-guide/pull-requests.md#pull-request-guide
[donate]: https://www.arduino.cc/en/donate/
[sponsor]: https://github.com/sponsors/arduino
[store]: https://store.arduino.cc [store]: https://store.arduino.cc
## Resources ## Resources

View File

@@ -1,41 +1,13 @@
# Translator Guide # Translator Guide
The text of the Arduino IDE user interface is translated into several languages. The language can be selected in the dialog opened via **File > Preferences** in the Arduino IDE menus (**Arduino IDE > Preferences** for macOS users). The text of the Arduino IDE interface is translated into several languages. The language can be selected in the dialog opened via **File > Preferences** in the Arduino IDE menus (**Arduino IDE > Preferences** for macOS users).
Translating text and improving on existing translations is a valuable contribution to the project, helping make Arduino accessible to everyone. Translating text and improving on existing translations is a valuable contribution to the project, helping make Arduino accessible to everyone.
The translations for the text found in Arduino IDE come from several sources: The translations for the text found in the Arduino IDE come from several sources:
## Arduino IDE Text ## Arduino IDE Text
The text of the Arduino IDE application can be translated to the following languages:
- čeština (Czech)
- Deutsch (German)
- Dutch
- español (Spanish)
- français (French)
- italiano (Italian)
- magyar (Hungarian)
- polski (Polish)
- português (Portuguese)
- Türkçe (Turkish)
- български (Bulgarian)
- русский (Russian)
- українська (Ukrainian)
- 한국어 (Korean)
- 中文(简体) (Chinese Simplified)
- 中文(繁體) (Chinese Traditional)
- 日本語 (Japanese)
---
⚠ Unfortunately the 3rd party localization system used by the Arduino IDE application imposes a technical limitation to that set of languages. For this reason, we are unable to add support to Arduino IDE for additional languages (see [`arduino/arduino-ide#1447`](https://github.com/arduino/arduino-ide/issues/1447) for details).
There is no technical limitation on the set of languages to which **Arduino CLI** can be translated. If you would like to contribute translations for a language not on the above list, you are welcome to [contribute to the **Arduino CLI** project](#arduino-cli-text).
---
Translations of Arduino IDE's text is done in the "**Arduino IDE 2.0**" project on the **Transifex** localization platform: Translations of Arduino IDE's text is done in the "**Arduino IDE 2.0**" project on the **Transifex** localization platform:
https://explore.transifex.com/arduino-1/ide2/ https://explore.transifex.com/arduino-1/ide2/

View File

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

View File

@@ -1,7 +1,5 @@
const path = require('node:path'); const path = require('node:path');
const fs = require('fs');
const webpack = require('webpack'); const webpack = require('webpack');
const TheiaNativeWebpackPlugin = require('@theia/native-webpack-plugin');
const frontend = require('./gen-webpack.config'); const frontend = require('./gen-webpack.config');
const backend = require('./gen-webpack.node.config'); const backend = require('./gen-webpack.node.config');
const { const {
@@ -41,27 +39,6 @@ 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. // 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'); backend.config.entry['main'] = require.resolve('./arduino-ide-backend-main.js');