LibreVNA/.github/workflows/Build.yml

213 lines
8.1 KiB
YAML
Raw Normal View History

name: Build
on:
2020-12-05 20:43:09 +08:00
push:
branches:
- master
pull_request:
branches:
- master
jobs:
PC_Application_Ubuntu:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v1
- name: Install dependencies
run: |
2020-12-19 02:55:54 +08:00
sudo apt-get update
sudo apt-get install -y libusb-1.0-0-dev qt6-tools-dev qt6-base-dev
qtchooser -install qt6 $(which qmake6)
- name: Get build timestamp
id: id_date
2022-10-24 02:55:53 +08:00
run: echo "timestamp=$(date +%Y-%m-%d-%H-%M-%S)" >> $GITHUB_OUTPUT
- name: Get app version
id: id_version
run: |
2022-10-01 23:10:34 +08:00
cd Software/PC_Application/LibreVNA-GUI
fw_major=`grep -oP '(?<=FW_MAJOR=)[0-9]+' LibreVNA-GUI.pro`
fw_minor=`grep -oP '(?<=FW_MINOR=)[0-9]+' LibreVNA-GUI.pro`
fw_patch=`grep -oP '(?<=FW_PATCH=)[0-9]+' LibreVNA-GUI.pro`
2022-10-24 02:55:53 +08:00
echo "app_version=v$fw_major.$fw_minor.$fw_patch-${{steps.id_date.outputs.timestamp}}" >> $GITHUB_OUTPUT
- name: Build application
run: |
2022-10-01 23:10:34 +08:00
cd Software/PC_Application/LibreVNA-GUI
export QT_SELECT=qt6
2021-04-10 18:14:54 +08:00
qmake LibreVNA-GUI.pro
make -j9
shell: bash
- name: Upload artifact
env:
LIBREVNA_VERSION: "${{steps.id_version.outputs.app_version}}"
2023-11-20 00:36:19 +08:00
uses: actions/upload-artifact@v3
with:
name: LibreVNA-GUI-Ubuntu-${{env.LIBREVNA_VERSION}}
2022-10-01 23:10:34 +08:00
path: Software/PC_Application/LibreVNA-GUI/LibreVNA-GUI
PC_Application_Windows:
runs-on: windows-2019
steps:
- uses: actions/checkout@v1
- uses: msys2/setup-msys2@v2
- name: Install Qt
2023-11-20 00:36:19 +08:00
uses: jurplel/install-qt-action@v3
with:
version: '6.2.0'
arch: 'win64_mingw81'
- name: Download libusb
run: |
2022-10-24 02:55:53 +08:00
curl -o libusb.7z -L https://github.com/libusb/libusb/releases/download/v1.0.25/libusb-1.0.25.7z
7z x libusb.7z -r -olibusb
Xcopy /E /I /Y libusb\include ..\Qt\6.2.0\mingw81_64\include
2022-10-25 04:26:17 +08:00
Xcopy /E /I /Y libusb\MinGW64\static\libusb-1.0.a Software\PC_Application\LibreVNA-GUI
shell: cmd
- name: Get build timestamp
shell: msys2 {0}
id: id_date
2022-10-24 02:55:53 +08:00
run: echo "timestamp=$(date +%Y-%m-%d-%H-%M-%S)" >> $GITHUB_OUTPUT
- name: Get app version
id: id_version
shell: msys2 {0}
run: |
2022-10-01 23:10:34 +08:00
cd Software/PC_Application/LibreVNA-GUI
fw_major=`grep -oP '(?<=FW_MAJOR=)[0-9]+' LibreVNA-GUI.pro`
fw_minor=`grep -oP '(?<=FW_MINOR=)[0-9]+' LibreVNA-GUI.pro`
fw_patch=`grep -oP '(?<=FW_PATCH=)[0-9]+' LibreVNA-GUI.pro`
2022-10-24 02:55:53 +08:00
echo "app_version=v$fw_major.$fw_minor.$fw_patch-${{steps.id_date.outputs.timestamp}}" >> $GITHUB_OUTPUT
- name: Build application
run: |
2022-10-01 23:10:34 +08:00
cd Software/PC_Application/LibreVNA-GUI
2021-04-10 18:14:54 +08:00
qmake LibreVNA-GUI.pro
make -j9
2020-11-23 21:22:19 +08:00
shell: cmd
- name: Deploy application
run: |
2022-10-01 23:10:34 +08:00
cd Software/PC_Application/LibreVNA-GUI/release
del *.o *.cpp
windeployqt.exe .
copy ..\..\..\..\..\Qt\6.2.0\mingw81_64\bin\libwinpthread-1.dll .
copy ..\..\..\..\..\Qt\6.2.0\mingw81_64\bin\libgcc_s_seh-1.dll .
copy "..\..\..\..\..\Qt\6.2.0\mingw81_64\bin\libstdc++-6.dll" .
copy ..\..\..\..\..\Qt\6.2.0\mingw81_64\bin\Qt6OpenGL.dll .
shell: cmd
- name: Upload
2023-11-20 00:36:19 +08:00
uses: actions/upload-artifact@v3
env:
LIBREVNA_VERSION: "${{steps.id_version.outputs.app_version}}"
with:
name: GUI_Windows-${{env.LIBREVNA_VERSION}}
2022-10-01 23:10:34 +08:00
path: Software/PC_Application/LibreVNA-GUI/release
2021-04-10 18:10:57 +08:00
PC_Application_OSX:
2023-11-20 00:36:19 +08:00
runs-on: macos-12
2021-04-10 18:10:57 +08:00
steps:
- uses: actions/checkout@v1
- name: Install dependencies
run: |
brew install qt@6 libusb pcre
2021-04-10 18:10:57 +08:00
- name: Set Environment
run: |
echo "/usr/local/opt/qt@6/bin" >> $GITHUB_PATH
2021-04-10 18:10:57 +08:00
- name: Get build timestamp
id: id_date
2022-10-24 02:55:53 +08:00
run: echo "timestamp=$(date +%Y-%m-%d-%H-%M-%S)" >> $GITHUB_OUTPUT
- name: Get app version
id: id_version
run: |
2022-10-01 23:10:34 +08:00
cd Software/PC_Application/LibreVNA-GUI
fw_major=`pcregrep -o '(?<=FW_MAJOR=)[0-9]+' LibreVNA-GUI.pro`
fw_minor=`pcregrep -o '(?<=FW_MINOR=)[0-9]+' LibreVNA-GUI.pro`
fw_patch=`pcregrep -o '(?<=FW_PATCH=)[0-9]+' LibreVNA-GUI.pro`
2022-10-24 02:55:53 +08:00
echo "app_version=v$fw_major.$fw_minor.$fw_patch-${{steps.id_date.outputs.timestamp}}" >> $GITHUB_OUTPUT
2021-04-10 18:10:57 +08:00
- name: Build application
run: |
2022-10-01 23:10:34 +08:00
cd Software/PC_Application/LibreVNA-GUI
2021-04-10 18:14:54 +08:00
qmake LibreVNA-GUI.pro
2021-04-10 18:10:57 +08:00
make -j9
macdeployqt LibreVNA-GUI.app
# Unfortunately, we have to do some hackery to fix the loading path errors
# and missing dylibs from macdeployqt.
cp -r /usr/local/Frameworks/QtDbus.framework/ LibreVNA-GUI.app/Contents/Frameworks
cp /usr/local/lib/libusb-1.0.0.dylib LibreVNA-GUI.app/Contents/Frameworks
install_name_tool -change /usr/local/opt/libusb/lib/libusb-1.0.0.dylib @executable_path/../Frameworks/libusb-1.0.0.dylib LibreVNA-GUI.app/Contents/MacOS/LibreVNA-GUI
install_name_tool -change /usr/local/opt/qt/lib/QtWidgets.framework/Versions/A/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/A/QtWidgets LibreVNA-GUI.app/Contents/MacOS/LibreVNA-GUI
install_name_tool -change /usr/local/opt/qt/lib/QtGui.framework/Versions/A/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/A/QtGui LibreVNA-GUI.app/Contents/MacOS/LibreVNA-GUI
install_name_tool -change /usr/local/opt/qt/lib/QtNetwork.framework/Versions/A/QtNetwork @executable_path/../Frameworks/QtNetwork.framework/Versions/A/QtNetwork LibreVNA-GUI.app/Contents/MacOS/LibreVNA-GUI
install_name_tool -change /usr/local/opt/qt/lib/QtCore.framework/Versions/A/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/A/QtCore LibreVNA-GUI.app/Contents/MacOS/LibreVNA-GUI
cp /usr/local/opt/dbus/lib/libdbus-1.3.dylib LibreVNA-GUI.app/Contents/Frameworks/QtDBus.framework
install_name_tool -change /usr/local/opt/dbus/lib/libdbus-1.3.dylib @executable_path/../Frameworks/QtDbus.framework/libdbus-1.3.dylib LibreVNA-GUI.app/Contents/Frameworks/QtDBus.framework/Versions/A/QtDBus
2021-04-10 18:14:54 +08:00
zip -ry LibreVNA-GUI.zip LibreVNA-GUI.app
2021-04-10 18:10:57 +08:00
shell: bash
- name: Upload artifact
env:
LIBREVNA_VERSION: "${{steps.id_version.outputs.app_version}}"
2023-11-20 00:36:19 +08:00
uses: actions/upload-artifact@v3
2021-04-10 18:10:57 +08:00
with:
name: LibreVNA-GUI-OSX-${{env.LIBREVNA_VERSION}}
2022-10-01 23:10:34 +08:00
path: Software/PC_Application/LibreVNA-GUI/LibreVNA-GUI.zip
Embedded_Firmware:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v1
- name: Install toolchain
run: |
sudo apt-get install -y gcc-arm-none-eabi binutils-arm-none-eabi
- name: Get build timestamp
id: id_date
2022-10-24 02:55:53 +08:00
run: echo "timestamp=$(date +%Y-%m-%d-%H-%M-%S)" >> $GITHUB_OUTPUT
- name: Get app version
id: id_version
run: |
cd Software/VNA_embedded
fw_major=`grep -oP '(?<=FW_MAJOR=)[0-9]+' Makefile`
fw_minor=`grep -oP '(?<=FW_MINOR=)[0-9]+' Makefile`
fw_patch=`grep -oP '(?<=FW_PATCH=)[0-9]+' Makefile`
hw_revision=`grep "DHW_REVISION=" Makefile | sed "s/-DHW_REVISION=\"'//" | sed "sr'\" [\]rr"`
2022-10-24 02:55:53 +08:00
echo "app_version=hw-rev-$hw_revision-v$fw_major.$fw_minor.$fw_patch-${{steps.id_date.outputs.timestamp}}" >> $GITHUB_OUTPUT
- name: Build application
run: |
cd Software/VNA_embedded
make -j9
cp build/VNA_embedded.elf ../../
shell: bash
- name: Combine with FPGA bitstream
run: |
python3 AssembleFirmware.py
shell: bash
- name: Upload
2023-11-20 00:36:19 +08:00
uses: actions/upload-artifact@v3
env:
LIBREVNA_VERSION: "${{steps.id_version.outputs.app_version}}"
with:
name: EmbeddedFirmware-${{env.LIBREVNA_VERSION}}
path: |
VNA_embedded.elf
combined.vnafw