Skip to content

Commit

Permalink
Add support for linux-arm64 host platform
Browse files Browse the repository at this point in the history
  • Loading branch information
brondani committed Nov 15, 2022
2 parents 4a391a6 + bf0c893 commit acdeb88
Show file tree
Hide file tree
Showing 5 changed files with 154 additions and 75 deletions.
126 changes: 79 additions & 47 deletions .github/workflows/toolbox.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
uses: dsaltares/fetch-gh-release-asset@master
with:
repo: "Open-CMSIS-Pack/devtools"
version: tags/tools/buildmgr/1.2.0
version: tags/tools/buildmgr/1.3.0
file: cbuild_install.sh
target: toolbox/cbuild/cbuild_install.sh
token: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -48,7 +48,7 @@ jobs:
uses: dsaltares/fetch-gh-release-asset@master
with:
repo: "Open-CMSIS-Pack/devtools"
version: tags/tools/projmgr/1.2.0
version: tags/tools/projmgr/1.3.0
file: projmgr.zip
target: toolbox/projmgr/projmgr.zip
token: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -57,26 +57,42 @@ jobs:
uses: dsaltares/fetch-gh-release-asset@master
with:
repo: "Open-CMSIS-Pack/devtools"
version: tags/tools/packchk/1.3.96
version: tags/tools/packchk/1.3.97
regex: true
file: "packchk-.*\\.zip"
file: "packchk-.*\\.(zip|tbz2)"
target: "toolbox/packchk/"
token: ${{ secrets.GITHUB_TOKEN }}

- name: Download svdconv release assets
uses: dsaltares/fetch-gh-release-asset@master
with:
repo: "Open-CMSIS-Pack/devtools"
version: tags/tools/svdconv/3.3.43
regex: true
file: "svdconv-.*\\.(zip|tbz2)"
target: "toolbox/svdconv/"
token: ${{ secrets.GITHUB_TOKEN }}

- name: Unzip and copy files
run: |
sudo chmod +x ./cbuild/cbuild_install.sh
./cbuild/cbuild_install.sh -x cbuild
cp -r cbuild/bin/* distribution/bin
cp -r cbuild/etc/* distribution/etc
unzip projmgr/projmgr.zip -d projmgr
cp projmgr/bin/darwin64/csolution distribution/bin/csolution.mac
cp projmgr/bin/linux64/csolution distribution/bin/csolution.lin
cp projmgr/bin/windows64/csolution.exe distribution/bin/csolution.exe
cp projmgr/bin/darwin-amd64/csolution distribution/bin/csolution.mac-amd64
cp projmgr/bin/linux-amd64/csolution distribution/bin/csolution.lin-amd64
cp projmgr/bin/linux-arm64/csolution distribution/bin/csolution.lin-arm64
cp projmgr/bin/windows-amd64/csolution.exe distribution/bin/csolution.exe-amd64
cp -r projmgr/etc/* distribution/etc
unzip packchk/packchk-\*-darwin64.zip -d packchk && mv packchk/packchk distribution/bin/packchk.mac
unzip packchk/packchk-\*-linux64.zip -d packchk && mv packchk/packchk distribution/bin/packchk.lin
unzip packchk/packchk-\*-windows64.zip -d packchk && mv packchk/packchk.exe distribution/bin/packchk.exe
tar -xvf packchk/packchk-*-darwin64-amd64.tbz2 -C packchk && mv packchk/packchk distribution/bin/packchk.mac-amd64
tar -xvf packchk/packchk-*-linux64-amd64.tbz2 -C packchk && mv packchk/packchk distribution/bin/packchk.lin-amd64
tar -xvf packchk/packchk-*-linux64-arm64.tbz2 -C packchk && mv packchk/packchk distribution/bin/packchk.lin-arm64
unzip packchk/packchk-\*-windows64-amd64.zip -d packchk && mv packchk/packchk.exe distribution/bin/packchk.exe-amd64
tar -xvf svdconv/svdconv-*-darwin64-amd64.tbz2 -C svdconv && mv svdconv/svdconv distribution/bin/svdconv.mac-amd64
tar -xvf svdconv/svdconv-*-linux64-amd64.tbz2 -C svdconv && mv svdconv/svdconv distribution/bin/svdconv.lin-amd64
tar -xvf svdconv/svdconv-*-linux64-arm64.tbz2 -C svdconv && mv svdconv/svdconv distribution/bin/svdconv.lin-arm64
unzip svdconv/svdconv-\*-windows64-amd64.zip -d svdconv && mv svdconv/svdconv.exe distribution/bin/svdconv.exe-amd64
cp ../docs/LICENSE.txt distribution
cp ../docs/index.html distribution/doc
working-directory: toolbox
Expand Down Expand Up @@ -117,7 +133,7 @@ jobs:
- { os: macos-12, target: darwin64, arch: amd64 }
- { os: windows-2019, target: windows64, arch: amd64}
- { os: ubuntu-20.04, target: linux64, arch: amd64}
- { os: ubuntu-20.04, target: linux64, arch: aarch64}
- { os: ubuntu-20.04, target: linux64, arch: arm64}
steps:
- name: Install macos deps
if: ${{ startsWith(matrix.config.os, 'macos') }}
Expand Down Expand Up @@ -231,54 +247,70 @@ jobs:
- name: Copy files separated by target for archiving
run: |
mkdir -p zip/cmsis-toolbox-windows64/bin zip/cmsis-toolbox-windows64/etc zip/cmsis-toolbox-windows64/doc
mkdir -p zip/cmsis-toolbox-linux64/bin zip/cmsis-toolbox-linux64/etc zip/cmsis-toolbox-linux64/doc
mkdir -p zip/cmsis-toolbox-darwin64/bin zip/cmsis-toolbox-darwin64/etc zip/cmsis-toolbox-darwin64/doc
cp zip/bin/cbuild.exe zip/cmsis-toolbox-windows64/bin/cbuild.exe
cp zip/bin/cbuildgen.exe zip/cmsis-toolbox-windows64/bin/cbuildgen.exe
cp zip/bin/cpackget.exe zip/cmsis-toolbox-windows64/bin/cpackget.exe
cp zip/bin/csolution.exe zip/cmsis-toolbox-windows64/bin/csolution.exe
cp zip/bin/packchk.exe zip/cmsis-toolbox-windows64/bin/packchk.exe
cp zip/bin/cbuild.lin zip/cmsis-toolbox-linux64/bin/cbuild
cp zip/bin/cbuildgen.lin zip/cmsis-toolbox-linux64/bin/cbuildgen
cp zip/bin/cpackget.lin zip/cmsis-toolbox-linux64/bin/cpackget
cp zip/bin/csolution.lin zip/cmsis-toolbox-linux64/bin/csolution
cp zip/bin/packchk.lin zip/cmsis-toolbox-linux64/bin/packchk
cp zip/bin/cbuild.mac zip/cmsis-toolbox-darwin64/bin/cbuild
cp zip/bin/cbuildgen.mac zip/cmsis-toolbox-darwin64/bin/cbuildgen
cp zip/bin/cpackget.mac zip/cmsis-toolbox-darwin64/bin/cpackget
cp zip/bin/csolution.mac zip/cmsis-toolbox-darwin64/bin/csolution
cp zip/bin/packchk.mac zip/cmsis-toolbox-darwin64/bin/packchk
cp zip/LICENSE.txt zip/cmsis-toolbox-windows64/LICENSE.txt
cp zip/LICENSE.txt zip/cmsis-toolbox-linux64/LICENSE.txt
cp zip/LICENSE.txt zip/cmsis-toolbox-darwin64/LICENSE.txt
mkdir -p zip/cmsis-toolbox-windows-amd64/bin zip/cmsis-toolbox-windows-amd64/etc zip/cmsis-toolbox-windows-amd64/doc
mkdir -p zip/cmsis-toolbox-linux-amd64/bin zip/cmsis-toolbox-linux-amd64/etc zip/cmsis-toolbox-linux-amd64/doc
mkdir -p zip/cmsis-toolbox-linux-arm64/bin zip/cmsis-toolbox-linux-arm64/etc zip/cmsis-toolbox-linux-arm64/doc
mkdir -p zip/cmsis-toolbox-darwin-amd64/bin zip/cmsis-toolbox-darwin-amd64/etc zip/cmsis-toolbox-darwin-amd64/doc
cp zip/bin/cbuild.exe-amd64 zip/cmsis-toolbox-windows-amd64/bin/cbuild.exe
cp zip/bin/cbuildgen.exe-amd64 zip/cmsis-toolbox-windows-amd64/bin/cbuildgen.exe
cp zip/bin/cpackget.exe-amd64 zip/cmsis-toolbox-windows-amd64/bin/cpackget.exe
cp zip/bin/csolution.exe-amd64 zip/cmsis-toolbox-windows-amd64/bin/csolution.exe
cp zip/bin/packchk.exe-amd64 zip/cmsis-toolbox-windows-amd64/bin/packchk.exe
cp zip/bin/svdconv.exe-amd64 zip/cmsis-toolbox-windows-amd64/bin/svdconv.exe
cp zip/bin/cbuild.lin-amd64 zip/cmsis-toolbox-linux-amd64/bin/cbuild
cp zip/bin/cbuildgen.lin-amd64 zip/cmsis-toolbox-linux-amd64/bin/cbuildgen
cp zip/bin/cpackget.lin-amd64 zip/cmsis-toolbox-linux-amd64/bin/cpackget
cp zip/bin/csolution.lin-amd64 zip/cmsis-toolbox-linux-amd64/bin/csolution
cp zip/bin/packchk.lin-amd64 zip/cmsis-toolbox-linux-amd64/bin/packchk
cp zip/bin/svdconv.lin-amd64 zip/cmsis-toolbox-linux-amd64/bin/svdconv
cp zip/bin/cbuild.lin-arm64 zip/cmsis-toolbox-linux-arm64/bin/cbuild
cp zip/bin/cbuildgen.lin-arm64 zip/cmsis-toolbox-linux-arm64/bin/cbuildgen
cp zip/bin/cpackget.lin-arm64 zip/cmsis-toolbox-linux-arm64/bin/cpackget
cp zip/bin/csolution.lin-arm64 zip/cmsis-toolbox-linux-arm64/bin/csolution
cp zip/bin/packchk.lin-arm64 zip/cmsis-toolbox-linux-arm64/bin/packchk
cp zip/bin/svdconv.lin-arm64 zip/cmsis-toolbox-linux-arm64/bin/svdconv
cp zip/bin/cbuild.mac-amd64 zip/cmsis-toolbox-darwin-amd64/bin/cbuild
cp zip/bin/cbuildgen.mac-amd64 zip/cmsis-toolbox-darwin-amd64/bin/cbuildgen
cp zip/bin/cpackget.mac-amd64 zip/cmsis-toolbox-darwin-amd64/bin/cpackget
cp zip/bin/csolution.mac-amd64 zip/cmsis-toolbox-darwin-amd64/bin/csolution
cp zip/bin/packchk.mac-amd64 zip/cmsis-toolbox-darwin-amd64/bin/packchk
cp zip/bin/svdconv.mac-amd64 zip/cmsis-toolbox-darwin-amd64/bin/svdconv
cp zip/LICENSE.txt zip/cmsis-toolbox-windows-amd64/LICENSE.txt
cp zip/LICENSE.txt zip/cmsis-toolbox-linux-amd64/LICENSE.txt
cp zip/LICENSE.txt zip/cmsis-toolbox-linux-arm64/LICENSE.txt
cp zip/LICENSE.txt zip/cmsis-toolbox-darwin-amd64/LICENSE.txt
rm zip/etc/setup
cp -r zip/etc/* zip/cmsis-toolbox-windows64/etc
cp -r zip/etc/* zip/cmsis-toolbox-linux64/etc
cp -r zip/etc/* zip/cmsis-toolbox-darwin64/etc
cp -r zip/doc/* zip/cmsis-toolbox-windows64/doc
cp -r zip/doc/* zip/cmsis-toolbox-linux64/doc
cp -r zip/doc/* zip/cmsis-toolbox-darwin64/doc
cp -r zip/etc/* zip/cmsis-toolbox-windows-amd64/etc
cp -r zip/etc/* zip/cmsis-toolbox-linux-amd64/etc
cp -r zip/etc/* zip/cmsis-toolbox-linux-arm64/etc
cp -r zip/etc/* zip/cmsis-toolbox-darwin-amd64/etc
cp -r zip/doc/* zip/cmsis-toolbox-windows-amd64/doc
cp -r zip/doc/* zip/cmsis-toolbox-linux-amd64/doc
cp -r zip/doc/* zip/cmsis-toolbox-linux-arm64/doc
cp -r zip/doc/* zip/cmsis-toolbox-darwin-amd64/doc
working-directory: toolbox

- name: Set toolchain default paths
run: |
./scripts/set-default.sh Windows toolbox/zip/cmsis-toolbox-windows64/etc
./scripts/set-default.sh Linux toolbox/zip/cmsis-toolbox-linux64/etc
./scripts/set-default.sh Darwin toolbox/zip/cmsis-toolbox-darwin64/etc
./scripts/set-default.sh Windows toolbox/zip/cmsis-toolbox-windows-amd64/etc
./scripts/set-default.sh Linux toolbox/zip/cmsis-toolbox-linux-amd64/etc
./scripts/set-default.sh Linux toolbox/zip/cmsis-toolbox-linux-arm64/etc
./scripts/set-default.sh Darwin toolbox/zip/cmsis-toolbox-darwin-amd64/etc
- name: Zip folders
run: |
zip -r cmsis-toolbox-windows64.zip cmsis-toolbox-windows64
tar -czvf cmsis-toolbox-linux64.tar.gz cmsis-toolbox-linux64
tar -czvf cmsis-toolbox-darwin64.tar.gz cmsis-toolbox-darwin64
zip -r cmsis-toolbox-windows-amd64.zip cmsis-toolbox-windows-amd64
tar -czvf cmsis-toolbox-linux-amd64.tar.gz cmsis-toolbox-linux-amd64
tar -czvf cmsis-toolbox-linux-arm64.tar.gz cmsis-toolbox-linux-arm64
tar -czvf cmsis-toolbox-darwin-amd64.tar.gz cmsis-toolbox-darwin-amd64
working-directory: toolbox/zip

- name: Calculate checksums
run: |
sha256sum cmsis-toolbox-windows64.zip --text > cmsis-toolbox-checksums.txt
sha256sum cmsis-toolbox-linux64.tar.gz --text >> cmsis-toolbox-checksums.txt
sha256sum cmsis-toolbox-darwin64.tar.gz --text >> cmsis-toolbox-checksums.txt
sha256sum cmsis-toolbox-windows-amd64.zip --text > cmsis-toolbox-checksums.txt
sha256sum cmsis-toolbox-linux-amd64.tar.gz --text >> cmsis-toolbox-checksums.txt
sha256sum cmsis-toolbox-linux-arm64.tar.gz --text >> cmsis-toolbox-checksums.txt
sha256sum cmsis-toolbox-darwin-amd64.tar.gz --text >> cmsis-toolbox-checksums.txt
working-directory: toolbox/zip

- name: Attach installer to release assets
Expand Down
15 changes: 8 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@ The [**documentation**](./docs/installation.md) explains the download, installat

The CMSIS-Toolbox includes:

Tool | Binary | Description | Origin Repo
:------------------|:---------------|:----------------------------------------------------|:------------------------------------------------------------------
Package Installer | cpackget | Install packs into local environment | [Open-CMSIS-Pack/cpackget](https://github.com/Open-CMSIS-Pack/cpackget)
Project Manager | csolution | Validate multiproject solutions and generate CPRJs | [Open-CMSIS-Pack/devtools](https://github.com/Open-CMSIS-Pack/devtools)
Build Invocation | cbuild | Utility orchestrating the build steps for a CPRJ | [Open-CMSIS-Pack/cbuild](https://github.com/Open-CMSIS-Pack/cbuild)
Build Generator | cbuildgen | Generate CMakeLists.txt from CPRJ | [Open-CMSIS-Pack/devtools](https://github.com/Open-CMSIS-Pack/devtools)
Pack Verification | packchk | Semantic validation of a software pack | [Open-CMSIS-Pack/devtools](https://github.com/Open-CMSIS-Pack/devtools)
Tool | Binary | Description | Origin Repo
:------------------------|:---------------|:----------------------------------------------------|:------------------------------------------------------------------
Package Installer | cpackget | Install packs into local environment | [Open-CMSIS-Pack/cpackget](https://github.com/Open-CMSIS-Pack/cpackget)
Project Manager | csolution | Validate multiproject solutions and generate CPRJs | [Open-CMSIS-Pack/devtools](https://github.com/Open-CMSIS-Pack/devtools)
Build Invocation | cbuild | Utility orchestrating the build steps for a CPRJ | [Open-CMSIS-Pack/cbuild](https://github.com/Open-CMSIS-Pack/cbuild)
Build Generator | cbuildgen | Generate CMakeLists.txt from CPRJ | [Open-CMSIS-Pack/devtools](https://github.com/Open-CMSIS-Pack/devtools)
Pack Verification | packchk | Semantic validation of a software pack | [Open-CMSIS-Pack/devtools](https://github.com/Open-CMSIS-Pack/devtools)
System View Verification | svdconv | Semantic validation of System View description files and device header file generator | [Open-CMSIS-Pack/devtools](https://github.com/Open-CMSIS-Pack/devtools)
15 changes: 8 additions & 7 deletions docs/CMSIS-Toolbox.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@

The CMSIS Toolbox encapsulates CMSIS Package Installer, CMSIS Pack Check, CMSIS Build tools and CMSIS Project Manager binaries for all supported platforms as well as documents, schemas and templates to assist the creation and compilation of multiproject solutions based on CMSIS Packs.

Tool | Binary | Description
:------------------|:---------------|:-------------------------------------------------
Package Installer | cpackget | Install packs into local environment
Pack Check | packchk | Validate CMSIS packs
Project Manager | csolution | Validate multiproject solutions and generate CPRJs
Build Manager | cbuildgen | Generate CMakeLists and invoke CMake/Ninja

Tool | Binary | Description
:----------------------- |:---------------|:-------------------------------------------------
Package Installer | cpackget | Install packs into local environment
Project Manager | csolution | Validate multiproject solutions and generate CPRJs
Build Invocation | cbuild | Utility orchestrating the build steps for a CPRJ
Build Generator | cbuildgen | Generate CMakeLists.txt from CPRJ
Pack Verification | packchk | Semantic validation of a software pack
System View Verification | svdconv | Semantic validation of System View description files and device header file generator

## Getting Started

Expand Down
55 changes: 45 additions & 10 deletions installer/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ usage() {
echo " -h : Print out version and usage"
echo " -v : Print out version, timestamp and git hash"
echo " -x [<dir>] : Extract full content into optional <dir>"
echo " -a [<dir>] : Set architecture: amd64 or arm64"
}

# version
Expand Down Expand Up @@ -64,6 +65,13 @@ winpath() {
fi
}

# Remove binaries
remove_bin() {
rm -f "$@"/*/*.lin-*
rm -f "$@"/*/*.exe-*
rm -f "$@"/*/*.mac-*
}

# find __ARCHIVE__ maker
marker=$(awk '/^__ARCHIVE__/ {print NR + 1; exit 0; }' "${0}")

Expand All @@ -89,11 +97,33 @@ if [ $# -gt 0 ]
fi
tail -n+${marker} "${0}" | tar xz -C "$dir"
exit 0
elif [ $1 == "-a" ]
then
arch=$2
else
echo "Warning: command line argument ignored!"
fi
fi

# detect architecture
if [ -z ${arch} ]
then
arch=$(uname -m)
fi
case $arch in
'amd64' | 'x86_64')
arch="amd64"
;;
'arm64' | aarch64*)
arch="arm64"
;;
*)
echo "[ERROR] Unsupported architecture $arch"
exit 1
;;
esac
echo "[INFO] Installing for architecture: ${arch}"

# detect platform and set 'OS' variable accordingly
OS=$(uname -s)
case $OS in
Expand Down Expand Up @@ -256,23 +286,28 @@ fi
# manage os specific files and extensions
case $OS in
'Linux' | 'WSL_Linux')
for f in "${install_dir}"/bin/*.lin; do
mv "$f" "${f%.lin}"
extn="lin-${arch}"
for f in "${install_dir}"/bin/*.${extn}; do
mv "$f" "${f%.${extn}}"
done
rm -f "${install_dir}"/*/*.exe
rm -f "${install_dir}"/*/*.mac
remove_bin ${install_dir}
chmod -R +x "${install_dir}"/bin
;;
'Windows' | 'WSL_Windows')
rm -f "${install_dir}"/*/*.lin
rm -f "${install_dir}"/*/*.mac
extn="exe-${arch}"
for f in "${install_dir}"/bin/*.${extn}; do
mv "$f" "${f%.${extn}}.exe"
done
echo "install_dir: ${install_dir}"
remove_bin ${install_dir}
;;
'Darwin')
for f in "${install_dir}"/bin/*.mac; do
mv "$f" "${f%.mac}"
# darwin arm64 native support is not available yet, temporary using amd64 instead
extn="mac-amd64"
for f in "${install_dir}"/bin/*.${extn}; do
mv "$f" "${f%.${extn}}"
done
rm -f "${install_dir}"/*/*.lin
rm -f "${install_dir}"/*/*.exe
remove_bin ${install_dir}
chmod -R +x "${install_dir}"/bin
;;
esac
Expand Down
18 changes: 14 additions & 4 deletions test/src/InstallerTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,20 @@ void ToolBoxInstallerTests::CheckInstallationDir(

void ToolBoxInstallerTests::CheckExtractedDir(const string& path, bool expect) {
vector<pair<string, vector<string>>> dirVec = {
{ "bin", vector<string>{
"cbuild.sh", "cbuildgen.exe","cbuildgen.lin","cbuildgen.mac",
"cpackget.exe", "cpackget.lin", "cpackget.mac",
"csolution.exe", "csolution.lin", "csolution.mac" }},
{ "bin", vector<string>{ "cbuild.sh",
"cbuild.lin-amd64", "cbuild.exe-amd64", "cbuild.mac-amd64",
"cpackget.lin-amd64", "cpackget.exe-amd64", "cpackget.mac-amd64",
"cbuildgen.lin-amd64", "cbuildgen.exe-amd64", "cbuildgen.mac-amd64",
"csolution.lin-amd64", "csolution.exe-amd64", "csolution.mac-amd64",
"packchk.lin-amd64", "packchk.exe-amd64", "packchk.mac-amd64",
"svdconv.lin-amd64", "svdconv.exe-amd64", "svdconv.mac-amd64",
"cbuild.lin-arm64",
"cpackget.lin-arm64",
"cbuildgen.lin-arm64",
"csolution.lin-arm64",
"packchk.lin-arm64",
"svdconv.lin-arm64" }},

{ "doc", vector<string>{
"index.html"}},

Expand Down

0 comments on commit acdeb88

Please sign in to comment.