chore: verify checksum for arm-gcc toolchain#1108
Conversation
There was a problem hiding this comment.
Pull request overview
This pull request enhances the ARM GCC toolchain installation process in the C++ devcontainer by pre-downloading the toolchain archives during the build stage and verifying their integrity with checksums. The changes eliminate the runtime wget download, improve build performance through apt caching, and ensure the correct architecture-specific toolchain is available.
Changes:
- Added ARM GNU toolchain downloads with SHA256 checksums for both x86_64 and aarch64 architectures in the downloader stages
- Consolidated toolchain extraction into the main RUN instruction with apt caching enabled
- Replaced the separate
wget-based ARM toolchain installation with extraction from pre-downloaded archives
✅
|
| Descriptor | Linter | Files | Fixed | Errors | Warnings | Elapsed time |
|---|---|---|---|---|---|---|
| ✅ ACTION | actionlint | 21 | 0 | 0 | 0.56s | |
| ✅ DOCKERFILE | hadolint | 3 | 0 | 0 | 0.7s | |
| ✅ GHERKIN | gherkin-lint | 6 | 0 | 0 | 2.68s | |
| ✅ JSON | npm-package-json-lint | yes | no | no | 0.42s | |
| ✅ JSON | prettier | 21 | 4 | 0 | 0 | 0.52s |
| ✅ JSON | v8r | 21 | 0 | 0 | 8.06s | |
| ✅ MARKDOWN | markdownlint | 12 | 0 | 0 | 0 | 1.09s |
| ✅ MARKDOWN | markdown-table-formatter | 12 | 0 | 0 | 0 | 0.26s |
| ✅ REPOSITORY | checkov | yes | no | no | 18.27s | |
| ✅ REPOSITORY | gitleaks | yes | no | no | 0.58s | |
| ✅ REPOSITORY | git_diff | yes | no | no | 0.01s | |
| ✅ REPOSITORY | grype | yes | no | no | 30.34s | |
| ✅ REPOSITORY | secretlint | yes | no | no | 0.97s | |
| ✅ REPOSITORY | syft | yes | no | no | 1.93s | |
| ✅ REPOSITORY | trivy | yes | no | no | 7.44s | |
| ✅ REPOSITORY | trivy-sbom | yes | no | no | 0.25s | |
| ✅ REPOSITORY | trufflehog | yes | no | no | 2.21s | |
| lychee | 81 | 3 | 0 | 23.68s | ||
| ✅ YAML | prettier | 29 | 0 | 0 | 0 | 1.06s |
| ✅ YAML | v8r | 29 | 0 | 0 | 8.12s | |
| ✅ YAML | yamllint | 29 | 0 | 0 | 0.82s |
Detailed Issues
⚠️ SPELL / lychee - 3 errors
[ERROR] https://www.contributor-covenant.org/ | Network error: error sending request for url (https://www.contributor-covenant.org/) Maybe a certificate error?
[IGNORED] docker://pandoc/extra:3.7.0@sha256:a703d335fa237f8fc3303329d87e2555dca5187930da38bfa9010fa4e690933a | Unsupported: Error creating request client: builder error for url (docker://pandoc/extra:3.7.0@sha256:a703d335fa237f8fc3303329d87e2555dca5187930da38bfa9010fa4e690933a)
[403] https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads | Network error: Forbidden
[ERROR] https://slsa.dev/spec/v1.0/verifying-artifacts | Network error: error sending request for url (https://slsa.dev/spec/v1.0/verifying-artifacts) Maybe a certificate error?
[IGNORED] https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/philips-software/amp-devcontainer | Unsupported: Error creating request client: builder error for url (vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/philips-software/amp-devcontainer)
📝 Summary
---------------------
🔍 Total..........126
✅ Successful.....121
⏳ Timeouts.........0
🔀 Redirected.......0
👻 Excluded.........0
❓ Unknown..........0
🚫 Errors...........3
Errors in test/cpp/features/security.feature
[ERROR] https://slsa.dev/spec/v1.0/verifying-artifacts | Network error: error sending request for url (https://slsa.dev/spec/v1.0/verifying-artifacts) Maybe a certificate error?
Errors in .github/CODE_OF_CONDUCT.md
[ERROR] https://www.contributor-covenant.org/ | Network error: error sending request for url (https://www.contributor-covenant.org/) Maybe a certificate error?
Errors in .github/TOOL_VERSION_ISSUE_TEMPLATE.md
[403] https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads | Network error: Forbidden
See detailed reports in MegaLinter artifacts
Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining FLAVOR_SUGGESTIONS: false)
- Documentation: Custom Flavors
- Command:
npx mega-linter-runner@9.3.0 --custom-flavor-setup --custom-flavor-linters ACTION_ACTIONLINT,DOCKERFILE_HADOLINT,GHERKIN_GHERKIN_LINT,JSON_V8R,JSON_PRETTIER,JSON_NPM_PACKAGE_JSON_LINT,MARKDOWN_MARKDOWNLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER,REPOSITORY_CHECKOV,REPOSITORY_GIT_DIFF,REPOSITORY_GITLEAKS,REPOSITORY_GRYPE,REPOSITORY_SECRETLINT,REPOSITORY_SYFT,REPOSITORY_TRIVY,REPOSITORY_TRIVY_SBOM,REPOSITORY_TRUFFLEHOG,SPELL_LYCHEE,YAML_PRETTIER,YAML_YAMLLINT,YAML_V8R
📦 Container Size AnalysisNote Comparing 📈 Size Comparison Table
|
📦 Container Size AnalysisNote Comparing 📈 Size Comparison Table
|
📦 Container Size AnalysisNote Comparing 📈 Size Comparison Table
|
|
Pull Request Report (#1108)Static measures
Time related measures
Status check related measures
|




🚀 Hey, I have created a Pull Request
Description of changes
This pull request updates the devcontainer Dockerfiles to improve reliability and security of the build process, and refactors the installation of the ARM GNU toolchain. The most important changes are grouped below:
Shell safety and reliability improvements:
Changed shell invocation in various Dockerfile steps to use
set -Eeuo pipefail, which ensures stricter error handling and catches more issues during builds. This change was applied to.devcontainer/base/Dockerfileand.devcontainer/cpp/Dockerfilesteps. [1] [2]Updated the shell used in the
extractorstage of.devcontainer/cpp/Dockerfileto/bin/bash -Eeuo pipefail -c, further improving script robustness.ARM GNU toolchain installation refactor:
Moved the download and extraction of the ARM GNU toolchain from a direct install in the main stage to the
extractorstage. The new process downloads the toolchain, verifies its SHA256 checksum based on architecture, and extracts it (excluding unnecessary files), then copies it into the final image. [1] [2]Removed the previous inline download-and-extract command for the ARM GNU toolchain in favor of copying the pre-extracted toolchain directory from the
extractorstage.These changes collectively make the build process more robust and secure, and streamline the installation of critical toolchain dependencies.
✔️ Checklist