Skip to content

Commit

Permalink
Use shorter base path for builds
Browse files Browse the repository at this point in the history
  • Loading branch information
ndabas committed Dec 1, 2024
1 parent e0afad9 commit 3b39726
Show file tree
Hide file tree
Showing 8 changed files with 69 additions and 39 deletions.
18 changes: 14 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,24 +54,34 @@ jobs:

- name: Check OpenOCD repository
shell: pwsh
run: |
$OpenOCDCommit = ((Get-Content .\config\repositories.json | ConvertFrom-Json).repositories | Where-Object { $_.href -like '*openocd.git' } | ForEach-Object { git ls-remote $_.href $_.tree }).Split("`t")[0]
$Bitness = (Get-Content .\config\${{ matrix.config }}.json | ConvertFrom-Json).bitness
Add-Content -Path $env:GITHUB_ENV -Value "OPENOCD_BUILD_ID=openocd-$OpenOCDCommit-$Bitness"
run: .\packages\common\build-id.ps1 openocd .\config\${{ matrix.config }}.json >> $env:GITHUB_ENV

- name: Cache OpenOCD build
uses: actions/cache@v4
with:
path: build/openocd-install
key: ${{ env.OPENOCD_BUILD_ID }}

- name: Check riscv-gnu-toolchain repository
shell: pwsh
run: .\packages\common\build-id.ps1 riscv-gnu-toolchain .\config\${{ matrix.config }}.json >> $env:GITHUB_ENV

- name: Cache riscv-gnu-toolchain build
uses: actions/cache@v4
with:
path: build/riscv-gnu-toolchain-install
key: ${{ env.RISCV-GNU-TOOLCHAIN_BUILD_ID }}

- name: Build ${{ matrix.config }} (${{ matrix.build-type }})
shell: pwsh
run: |
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
$ProgressPreference = 'SilentlyContinue'
subst P: .
P:
.\build.ps1 .\config\${{ matrix.config }}.json -MSYS2Path (msys2 -c 'cygpath -m /').TrimEnd('\/') -SkipSigning -Compression zlib -BuildType ${{ matrix.build-type }}
- name: Upload build artifacts
Expand Down
37 changes: 18 additions & 19 deletions build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ $tools = (Get-Content '.\config\tools.json' | ConvertFrom-Json).tools
$repositories = (Get-Content '.\config\repositories.json' | ConvertFrom-Json).repositories
$config = Get-Content $ConfigFile | ConvertFrom-Json
$bitness = $config.bitness
$mingw_arch = $config.mingwArch
$env:MSYSTEM = $config.msysEnv
$msysEnv = $config.msysEnv.ToLowerInvariant()
$downloads = $config.downloads
$componentSelection = ($config | Get-Member componentSelection) ? $config.componentSelection : $false

Expand Down Expand Up @@ -187,8 +188,6 @@ function msys {

# Preserve the current working directory
$env:CHERE_INVOKING = 'yes'
# Start MINGW32/64 environment
$env:MSYSTEM = "MINGW$bitness"
# Use real symlinks
$env:MSYS = "winsymlinks:nativestrict"

Expand All @@ -206,20 +205,20 @@ if (-not $SkipDownload) {
msys "pacboy -S --noconfirm --needed cmake:p ninja:p toolchain:p libusb:p hidapi:p libslirp:p"
}

if (-not (Test-Path ".\build\riscv-install\mingw$bitness")) {
msys "cd build && ../packages/riscv/build-riscv-gcc.sh $bitness $mingw_arch"
if (-not (Test-Path ".\build\riscv-gnu-toolchain-install\$msysEnv")) {
msys "cd build && ../packages/riscv/build-riscv-gcc.sh"
}

if (-not (Test-Path ".\build\openocd-install\mingw$bitness")) {
msys "cd build && ../packages/openocd/build-openocd.sh $bitness $mingw_arch"
if (-not (Test-Path ".\build\openocd-install\$msysEnv")) {
msys "cd build && ../packages/openocd/build-openocd.sh"
}

if (-not (Test-Path ".\build\picotool-install\mingw$bitness")) {
msys "cd build && ../packages/picotool/build-picotool.sh $bitness $mingw_arch"
if (-not (Test-Path ".\build\picotool-install\$msysEnv")) {
msys "cd build && ../packages/picotool/build-picotool.sh"
}

$template = Get-Content ".\packages\pico-sdk-tools\pico-sdk-tools-config-version.cmake" -Raw
$ExecutionContext.InvokeCommand.ExpandString($template) | Set-Content ".\build\pico-sdk-tools\mingw$bitness\pico-sdk-tools-config-version.cmake"
$ExecutionContext.InvokeCommand.ExpandString($template) | Set-Content ".\build\pico-sdk-tools\$msysEnv\pico-sdk-tools-config-version.cmake"

exec { .\build\pandoc\pandoc.exe --from gfm --to gfm --output .\build\ReadMe.txt .\docs\tutorial.md }

Expand Down Expand Up @@ -530,9 +529,9 @@ LangString DESC_Sec$($_.shortName) `${LANG_ENGLISH} "$($_.name)"
Section "-OpenOCD" SecOpenOCD
SetOutPath "`$INSTDIR\openocd"
File "build\openocd-install\mingw$bitness\bin\*.*"
File "build\openocd-install\$msysEnv\bin\*.*"
SetOutPath "`$INSTDIR\openocd\scripts"
File /r "build\openocd-install\mingw$bitness\share\openocd\scripts\*.*"
File /r "build\openocd-install\$msysEnv\share\openocd\scripts\*.*"
SectionEnd
Expand Down Expand Up @@ -562,7 +561,7 @@ Section "-Pico environment" SecPico
File /r "build\pico-sdk\*.*"
SetOutPath "`$INSTDIR\pico-sdk-tools"
File /r "build\pico-sdk-tools\mingw$bitness\*.*"
File /r "build\pico-sdk-tools\$msysEnv\*.*"
WriteRegStr `${PICO_REG_ROOT} "Software\Kitware\CMake\Packages\pico-sdk-tools" "v$sdkVersion" "`$INSTDIR\pico-sdk-tools"
SetOutPath "`$INSTDIR"
Expand Down Expand Up @@ -657,10 +656,10 @@ $env:__COMPAT_LAYER = ""

# Sign files before packaging up the installer
sign "build\uninstall-$suffix.exe",
"build\openocd-install\mingw$bitness\bin\openocd.exe",
"build\pico-sdk-tools\mingw$bitness\elf2uf2\elf2uf2.exe",
"build\pico-sdk-tools\mingw$bitness\pioasm\pioasm.exe",
"build\pico-sdk-tools\mingw$bitness\picotool\picotool.exe"
"build\openocd-install\$msysEnv\bin\openocd.exe",
"build\pico-sdk-tools\$msysEnv\elf2uf2\elf2uf2.exe",
"build\pico-sdk-tools\$msysEnv\pioasm\pioasm.exe",
"build\pico-sdk-tools\$msysEnv\picotool\picotool.exe"

exec { .\build\NSIS\makensis ".\$basename-$suffix.nsi" }
Write-Host "Installer saved to $binfile"
Expand All @@ -670,7 +669,7 @@ sign $binfile

# Package OpenOCD separately as well

$version = (cmd /c ".\build\openocd-install\mingw$bitness\bin\openocd.exe" --version '2>&1')[0]
$version = (cmd /c ".\build\openocd-install\$msysEnv\bin\openocd.exe" --version '2>&1')[0]
if (-not ($version -match 'Open On-Chip Debugger (?<version>[a-zA-Z0-9\.\-+]+) \((?<timestamp>[0-9\-:]+)\)')) {
Write-Error 'Could not determine openocd version'
}
Expand All @@ -681,4 +680,4 @@ $filename = 'openocd-{0}-{1}-{2}.zip' -f
$suffix

Write-Host "Saving OpenOCD package to $filename"
exec { tar -a -cf "bin\$filename" -C "build\openocd-install\mingw$bitness\bin" * -C "..\share\openocd" "scripts" }
exec { tar -a -cf "bin\$filename" -C "build\openocd-install\$msysEnv\bin" * -C "..\share\openocd" "scripts" }
2 changes: 1 addition & 1 deletion config/x64-standalone.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"bitness": 64,
"mingwArch": "x86_64",
"msysEnv": "MINGW64",
"downloads": [
{
"name": "GNU Arm Embedded Toolchain",
Expand Down
2 changes: 1 addition & 1 deletion config/x64.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"bitness": 64,
"mingwArch": "x86_64",
"msysEnv": "MINGW64",
"componentSelection": true,
"downloads": [
{
Expand Down
29 changes: 29 additions & 0 deletions packages/common/build-id.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
param (
[Parameter(Mandatory = $true,
Position = 0,
HelpMessage = "Base name of the repository to check.")]
[ValidateNotNullOrEmpty()]
[string]
$Repo,

[Parameter(Mandatory = $true,
Position = 1,
HelpMessage = "Path to a JSON installer configuration file.")]
[Alias("PSPath")]
[ValidateNotNullOrEmpty()]
[string]
$ConfigFile
)

#Requires -Version 7.2

Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'

$remoteCommit = ((Get-Content .\config\repositories.json | ConvertFrom-Json).repositories |
Where-Object { $_.href -like "*${Repo}.git" } |
ForEach-Object { git ls-remote $_.href $_.tree }).Split("`t")[0]

$msystem = (Get-Content $ConfigFile | ConvertFrom-Json).msysEnv

"$($Repo.ToUpperInvariant())_BUILD_ID=$Repo-$remoteCommit-$msystem"
9 changes: 3 additions & 6 deletions packages/openocd/build-openocd.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,11 @@

set -euo pipefail

BITNESS=$1
ARCH=$2

cd openocd
./bootstrap
./configure --disable-werror CFLAGS="-Duint=uint32_t"
make clean
make -j4
make -j$(nproc)
DESTDIR="$PWD/../openocd-install" make install
cp "/mingw$BITNESS/bin/libhidapi-0.dll" "$PWD/../openocd-install/mingw$BITNESS/bin"
cp "/mingw$BITNESS/bin/libusb-1.0.dll" "$PWD/../openocd-install/mingw$BITNESS/bin"
cp "/${MSYSTEM,,}/bin/libhidapi-0.dll" "$PWD/../openocd-install/${MSYSTEM,,}/bin"
cp "/${MSYSTEM,,}/bin/libusb-1.0.dll" "$PWD/../openocd-install/${MSYSTEM,,}/bin"
6 changes: 2 additions & 4 deletions packages/picotool/build-picotool.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@

set -euo pipefail

BITNESS=$1
ARCH=$2
INSTALLDIR="pico-sdk-tools/mingw$BITNESS"
INSTALLDIR="pico-sdk-tools/${MSYSTEM,,}"

export PICO_SDK_PATH="$PWD/pico-sdk"
export LDFLAGS="-static -static-libgcc -static-libstdc++"
Expand All @@ -28,4 +26,4 @@ build-tool pico-sdk/tools/pioasm -DPIOASM_FLAT_INSTALL=1 -Wno-dev
cp ../packages/pico-sdk-tools/pico-sdk-tools-config.cmake "$INSTALLDIR"

build-tool picotool -DPICOTOOL_FLAT_INSTALL=1
cp "/mingw$BITNESS/bin/libusb-1.0.dll" "$INSTALLDIR/picotool"
cp "/${MSYSTEM,,}/bin/libusb-1.0.dll" "$INSTALLDIR/picotool"
5 changes: 1 addition & 4 deletions packages/riscv/build-riscv-gcc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@

set -euo pipefail

BITNESS=$1
ARCH=$2

INSTALLDIR="riscv-install"
INSTALLDIR="riscv-gnu-toolchain-install/${MSYSTEM,,}"
mkdir -p "$INSTALLDIR"

BUILDDIR="$(pwd)"
Expand Down

0 comments on commit 3b39726

Please sign in to comment.