import board-specific meta-info

use script to find meta-info-<bundle name>.env
This commit is contained in:
David Holdeman 2024-02-14 15:39:10 -06:00 committed by rusefillc
parent 4cb1bbad8a
commit b10ba4ddf5
9 changed files with 54 additions and 70 deletions

View File

@ -532,18 +532,11 @@ jobs:
if: ${{ env.skip != 'true' }}
working-directory: ./firmware/
run: |
META_INFO=${{matrix.folder}}/meta-info-${{matrix.build-target}}.env
if [ -f "$META_INFO" ]; then
echo "[$META_INFO] found!"
echo META_INFO=$META_INFO >> $GITHUB_ENV
else
echo "Using default meta-info.env."
echo META_INFO="${{matrix.folder}}/meta-info.env" >> $GITHUB_ENV
fi
echo LTS=${{toJSON(inputs.lts)}} >> $GITHUB_ENV
echo REF=${{github.ref_name}} >> $GITHUB_ENV
echo BUNDLE_NAME=${{matrix.build-target}} >> $GITHUB_ENV
echo BOARD_DIR=${{matrix.folder}} >> $GITHUB_ENV
echo BOARD_META_PATH=$(bash bin/find_meta_info.sh ${{matrix.folder}} ${{matrix.build-target}}) >> $GITHUB_ENV
- name: Git Status
if: ${{ env.skip != 'true' }}
@ -596,16 +589,19 @@ jobs:
# Build the firmware!
- name: Build Firmware
if: ${{ env.skip != 'true' }}
run: bash misc/jenkins/compile_other_versions/compile.sh ${{matrix.folder}} ${{matrix.build-target}}
run: |
bash misc/jenkins/compile_other_versions/compile.sh
- name: Package Bundle
if: ${{ env.full == 'true' }}
run: bash misc/jenkins/compile_other_versions/prepare_bundle.sh ${{matrix.build-target}} "firmware/tunerstudio/generated/rusefi_${{matrix.short-board-name}}.ini" ${{ github.ref_name }}
run: |
source firmware/config/boards/common_script_read_meta_env.inc firmware/${{ env.BOARD_META_PATH }}
bash misc/jenkins/build_working_folder.sh
- name: Upload Bundle
if: ${{ env.full == 'true' }}
working-directory: ./artifacts
run: bash ../firmware/bin/upload_bundle.sh ${{matrix.build-target}} ${{ toJSON(inputs.lts) }}
run: bash ../firmware/bin/upload_bundle.sh
- name: Add Bundles to Release
if: ${{ env.full == 'true' && env.upload == 'release' }}
@ -621,8 +617,11 @@ jobs:
- name: Upload .ini files to server
if: ${{ env.full == 'true' }}
working-directory: ./firmware/tunerstudio/generated
run: ../upload_ini.sh "rusefi_${{matrix.short-board-name}}.ini" ${{ secrets.RUSEFI_ONLINE_FTP_USER }} ${{ secrets.RUSEFI_ONLINE_FTP_PASS }} ${{ secrets.RUSEFI_FTP_SERVER }}
working-directory: ./firmware
run: |
source config/boards/common_script_read_meta_env.inc ${{ env.BOARD_META_PATH }}
cd tunerstudio/generated
../upload_ini.sh ${{ secrets.RUSEFI_ONLINE_FTP_USER }} ${{ secrets.RUSEFI_ONLINE_FTP_PASS }} ${{ secrets.RUSEFI_FTP_SERVER }}
- name: Upload build elf artifact
if: ${{ env.partial == 'true' }}

View File

@ -13,6 +13,8 @@ echo "HW CI build [$HW_FOLDER][$HW_TARGET]"
cd firmware
export BOARD_META_PATH=$(bash bin/find_meta_info.sh ${HW_FOLDER} ${HW_TARGET})
./gen_live_documentation.sh
./gen_config_board.sh $HW_FOLDER $HW_TARGET
@ -23,4 +25,4 @@ cd ..
export EXTRA_2_PARAMS=-DHARDWARE_CI
echo Build Firmware
misc/jenkins/compile_other_versions/compile.sh $HW_FOLDER $HW_TARGET
misc/jenkins/compile_other_versions/compile.sh

View File

@ -0,0 +1,13 @@
#!/usr/bin/env bash
BOARD_DIR=${1:-$BOARD_DIR}
BUNDLE_NAME=${2:-$BUNDLE_NAME}
META_INFO="${BOARD_DIR}/meta-info-${BUNDLE_NAME}.env"
if [ -f "$META_INFO" ]; then
echo "[$META_INFO] found!" >&2
echo "$META_INFO"
else
echo "Using default meta-info.env." >&2
echo "${BOARD_DIR}/meta-info.env"
fi

View File

@ -1,17 +1,16 @@
#!/usr/bin/env bash
SCRIPT_NAME=$(basename "$0")
FULL_BUNDLE_FILE="rusefi_bundle_$1.zip"
UPDATE_BUNDLE_FILE="rusefi_bundle_$1_autoupdate.zip"
LTS="$2"
FULL_BUNDLE_FILE="rusefi_bundle_${BUNDLE_NAME}.zip"
UPDATE_BUNDLE_FILE="rusefi_bundle_${BUNDLE_NAME}_autoupdate.zip"
if [ -n "$RUSEFI_SSH_USER" ]; then
echo "$SCRIPT_NAME: Uploading full bundle"
RET=0
if [ "${LTS}" = "true" ]; then
tar -czf - $FULL_BUNDLE_FILE | sshpass -p $RUSEFI_SSH_PASS ssh -o StrictHostKeyChecking=no $RUSEFI_SSH_USER@$RUSEFI_SSH_SERVER "mkdir -p build_server/lts/$1; tar -xzf - -C build_server/lts/$1"
tar -czf - $FULL_BUNDLE_FILE | sshpass -p $RUSEFI_SSH_PASS ssh -o StrictHostKeyChecking=no $RUSEFI_SSH_USER@$RUSEFI_SSH_SERVER "mkdir -p build_server/lts/${BUNDLE_NAME}; tar -xzf - -C build_server/lts/${BUNDLE_NAME}"
RET=$((RET+$?))
tar -czf - $UPDATE_BUNDLE_FILE | sshpass -p $RUSEFI_SSH_PASS ssh -o StrictHostKeyChecking=no $RUSEFI_SSH_USER@$RUSEFI_SSH_SERVER "mkdir -p build_server/lts/$1/autoupdate; tar -xzf - -C build_server/lts/$1/autoupdate"
tar -czf - $UPDATE_BUNDLE_FILE | sshpass -p $RUSEFI_SSH_PASS ssh -o StrictHostKeyChecking=no $RUSEFI_SSH_USER@$RUSEFI_SSH_SERVER "mkdir -p build_server/lts/${BUNDLE_NAME}/autoupdate; tar -xzf - -C build_server/lts/${BUNDLE_NAME}/autoupdate"
RET=$((RET+$?))
else
tar -czf - $FULL_BUNDLE_FILE | sshpass -p $RUSEFI_SSH_PASS ssh -o StrictHostKeyChecking=no $RUSEFI_SSH_USER@$RUSEFI_SSH_SERVER "tar -xzf - -C build_server"

View File

@ -158,6 +158,7 @@ include $(CHIBIOS)/os/various/cpp_wrappers/chcpp.mk
include $(CHIBIOS)/os/hal/lib/streams/streams.mk
BOARD_DIR := ../$(BOARD_DIR)
BOARD_META_PATH := ../$(BOARD_META_PATH)
BOARDINC = $(BOARD_DIR)
include $(BOARD_DIR)/board.mk

View File

@ -2,7 +2,7 @@
# this script is supposed to be executed from within 'firmware' folder
BOARD_META_PATH=$1
export BOARD_META_PATH=${1:-$BOARD_META_PATH}
. config/boards/common_script_read_meta_env.inc $BOARD_META_PATH
# fail on error
@ -21,6 +21,7 @@ echo "Entering $SCRIPT_NAME with board [$PROJECT_BOARD] and CPU [$PROJECT_CPU] a
mkdir -p .dep
# todo: start using env variable for number of threads or for '-r'
make -j$(nproc) -r
[ -e build/rusefi.hex ] || { echo "FAILED to compile by $SCRIPT_NAME with $PROJECT_BOARD $DEBUG_LEVEL_OPT and $EXTRA_PARAMS"; exit 1; }
if [ ! -z $POST_BUILD_SCRIPT ]; then

View File

@ -1,16 +1,16 @@
#!/bin/bash
#!/usr/bin/env bash
fileName=$1
# user=$2
# pass=$3
# host=$4
fileName="rusefi_$SHORT_BOARD_NAME.ini"
# user=$1
# pass=$2
# host=$3
if [ ! "$fileName" ]; then
echo "No $fileName"
if [ ! "$SHORT_BOARD_NAME" ]; then
echo "No SHORT_BOARD_NAME"
exit 1
fi
if [ ! "$2" ] || [ ! "$3" ] || [ ! "$4" ]; then
if [ ! "$1" ] || [ ! "$2" ] || [ ! "$3" ]; then
echo "upload_ini.sh says No Secrets, exiting"
exit 0
fi
@ -39,7 +39,7 @@ if [ ! -z "$sig" -a "$sig" != " " ]; then
echo "* found path: $path"
# we do not have ssh for this user
# sftp does not support -p flag on mkdir :(
sshpass -p $3 sftp -o StrictHostKeyChecking=no $2@$4 <<SSHCMD
sshpass -p $2 sftp -o StrictHostKeyChecking=no $1@$3 <<SSHCMD
cd rusefi
mkdir $branch
mkdir $branch/$year

View File

@ -5,25 +5,24 @@
#
# LTS: at some we had a dream of Long-term support branches. As of Jan 2024 this is not being used
#
# export FOLDER="temp/rusefi.999.hello" ; export BUNDLE_FULL_NAME=rusefi_test ; export INI_FILE_OVERRIDE=firmware/tunerstudio/generated/rusefi_uaefi.ini ; bash misc/jenkins/build_working_folder.sh
# BUNDLE_NAME="uaefi" LTS="true" REF="ltsbranch" bash misc/jenkins/build_working_folder.sh
#
set -e
if [[ -z "$FOLDER" ]]; then
echo "FOLDER variable not defined"
if [ -z "$BUNDLE_NAME" ]; then
echo "BUNDLE_NAME variable not defined"
exit -1
fi
if [[ -z "BUNDLE_FULL_NAME" ]]; then
echo "BUNDLE_FULL_NAME variable not defined"
exit -1
if [ "$LTS" = "true" -a -n "$REF" ]; then
FOLDER="temp/rusefi.${REF}.${BUNDLE_NAME}"
else
FOLDER="temp/rusefi.snapshot.${BUNDLE_NAME}"
fi
if [ -z $INI_FILE_OVERRIDE ]; then
echo "$SCRIPT_NAME: No ini_file specified!"
exit -1
fi
INI_FILE_OVERRIDE="firmware/tunerstudio/generated/rusefi_$SHORT_BOARD_NAME.ini"
BUNDLE_FULL_NAME="rusefi_bundle_${BUNDLE_NAME}"
echo "$SCRIPT_NAME: Will use $INI_FILE_OVERRIDE"

View File

@ -3,37 +3,7 @@
# fail on error!
set -e
# for example 'config/boards/proteus'
BOARD_DIR="$1"
# for example 'proteus_f4'
export BUNDLE_NAME="$2"
SCRIPT_NAME=compile.sh
echo "Entering $SCRIPT_NAME with folder $BOARD_DIR and bundle name $BUNDLE_NAME"
[ -n $BOARD_DIR ] || { echo "BOARD_DIR parameter expected"; exit 1; }
[ -n $BUNDLE_NAME ] || { echo "BUNDLE_NAME parameter expected"; exit 1; }
cd firmware
bash clean.sh
cd ..
cd firmware/$BOARD_DIR
pwd
COMPILE_SCRIPT="compile_$BUNDLE_NAME.sh"
if [ -f $COMPILE_SCRIPT ]; then
# detailed compile script is useful for instance when same board has multiple MCU targets
echo "[$COMPILE_SCRIPT] found!"
else
echo "Using default script name..."
COMPILE_SCRIPT="compile_firmware.sh"
fi
echo "Invoking $COMPILE_SCRIPT"
bash $COMPILE_SCRIPT
echo "Success for $SCRIPT_NAME!"
bash config/boards/common_script.sh "${BOARD_META_PATH}"