Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add github action to build releases for Mac #2303

Merged
merged 32 commits into from
Nov 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
362e23b
Add github action to build Mac release
srcejon Oct 31, 2024
a108d0b
Merge branch 'mac_ci' of https://github.com/srcejon/sdrangel into mac_ci
srcejon Oct 31, 2024
fceee07
Remove nehalem for arm build
srcejon Oct 31, 2024
46e8688
Install Qt 6
srcejon Oct 31, 2024
e5fa27b
Try removing setup-python
srcejon Oct 31, 2024
11614b4
Add brew subversion and nasm.
srcejon Oct 31, 2024
7bab142
usrpoutput: add_dependencies needs to follow add_library
srcejon Oct 31, 2024
f124186
Add python packages for UHD
srcejon Oct 31, 2024
3df0376
Is pip3 already installed?
srcejon Oct 31, 2024
e35133b
Try pipx
srcejon Oct 31, 2024
d9f36dc
Try venv
srcejon Oct 31, 2024
9d3fe6e
Try DPYTHON_EXECUTABLE
srcejon Oct 31, 2024
868bfea
Disble USRP for now.
srcejon Oct 31, 2024
e707d75
Update OpenCV as fails to compile with c++17
srcejon Oct 31, 2024
32a9144
Don't use absolute path, as build directory may be somewhere else.
srcejon Oct 31, 2024
5c41fe8
Build in one step, as faster
srcejon Oct 31, 2024
622958b
Use hash for ci builds
srcejon Oct 31, 2024
0bfef9d
Add x64 build. Try to build DATV.
srcejon Nov 1, 2024
28d0b73
Install SDRplay API
srcejon Nov 1, 2024
03f4dfe
Add target option
srcejon Nov 1, 2024
8e81d38
Update boost to latest release. 1.78 fails to build using c++17
srcejon Nov 1, 2024
7a9b5ee
Try Python3_ROOT_DIR
srcejon Nov 1, 2024
a9dbfea
Try bin
srcejon Nov 1, 2024
1653698
Try -DPYTHON_EXECUTABLE again
srcejon Nov 1, 2024
ff56523
Try Python3_FIND_FRAMEWORK=NEVER
srcejon Nov 1, 2024
84251ab
Merge branch 'f4exb:master' into mac_ci
srcejon Nov 1, 2024
1094874
Remove test code.
srcejon Nov 1, 2024
4ba1340
Merge branch 'mac_ci' of https://github.com/srcejon/sdrangel into mac_ci
srcejon Nov 1, 2024
9bd001c
Update to github releases
srcejon Nov 1, 2024
441c47c
Install python manually.
srcejon Nov 1, 2024
4f36b21
Use macos-14 image to build on ARM which is twice as fast.
srcejon Nov 1, 2024
763438c
Use short sha
srcejon Nov 1, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 127 additions & 0 deletions .github/workflows/mac.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
name: SDRangel Mac release build

on:
push:
branches:
- mac_ci
tags:
- 'v*'

jobs:
build_mac_x64:
runs-on: macos-13
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- name: Update brew
run: brew update
- name: Install brew packages
run: brew install nasm subversion
- name: Install SDRplay API
run: |
wget https://www.sdrplay.com/software/SDRplayAPI-macos-installer-universal-3.15.0.pkg
sudo installer -pkg SDRplayAPI-macos-installer-universal-3.15.0.pkg -target /
- name: Install python
run: |
wget https://www.python.org/ftp/python/3.12.7/python-3.12.7-macos11.pkg
sudo installer -pkg python-3.12.7-macos11.pkg -target /
- name: Install python packages for UHD
run: |
/usr/local/bin/python3.12 -m pip install numpy mako requests Cheetah3 setuptools
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: '6.7.3'
host: 'mac'
arch: 'clang_64'
modules: 'qtcharts qtscxml qt5compat qtlocation qtmultimedia qtpositioning qtserialport qtspeech qtwebsockets qtwebengine qtshadertools qtwebchannel'
- name: Configure SDRangel
run: |
mkdir build && cd build
cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_QT6=ON -DCMAKE_BUILD_TYPE=Release -DARCH_OPT=nehalem -DDEBUG_OUTPUT=ON -DENABLE_USRP=ON -DENABLE_MIRISDR=OFF -DBUILD_SERVER=OFF -DENABLE_EXTERNAL_LIBRARIES=ON -DBUNDLE=ON -DPKG_CONFIG_USE_CMAKE_PREFIX_PATH=TRUE -DPYTHON_EXECUTABLE=/usr/local/bin/python3.12
- name: Build SDRangel on Mac
run: |
cd build
make -j4 package
- name: Get version
id: get_version
run: |
if [[ "${{github.ref_name}}" == "mac_ci" ]]; then
echo "version=$(echo ${{github.sha}} | cut -c1-7)" >> $GITHUB_OUTPUT
else
echo "version=$(echo ${{github.ref_name}} | cut -c2-)" >> $GITHUB_OUTPUT
fi
- name: Get filename
id: get_filename
run: echo "filename=$(grep CPACK_PACKAGE_FILE_NAME build/CMakeCache.txt | cut -d "=" -f2)" >> $GITHUB_OUTPUT
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: sdrangel-${{ steps.get_version.outputs.version }}-macx64.dmg
path: ${{ github.workspace }}/build/${{ steps.get_filename.outputs.filename }}.dmg
- name: Upload release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: ${{ github.workspace }}/build/${{ steps.get_filename.outputs.filename }}.dmg

build_mac_arm64:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- name: Update brew
run: brew update
- name: Install brew packages
run: brew install nasm subversion
- name: Install SDRplay API
run: |
wget https://www.sdrplay.com/software/SDRplayAPI-macos-installer-universal-3.15.0.pkg
sudo installer -pkg SDRplayAPI-macos-installer-universal-3.15.0.pkg -target /
- name: Install python
run: |
wget https://www.python.org/ftp/python/3.12.7/python-3.12.7-macos11.pkg
sudo installer -pkg python-3.12.7-macos11.pkg -target /
- name: Install python packages for UHD
run: |
/usr/local/bin/python3.12 -m pip install numpy mako requests Cheetah3 setuptools
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: '6.7.3'
host: 'mac'
arch: 'clang_64'
modules: 'qtcharts qtscxml qt5compat qtlocation qtmultimedia qtpositioning qtserialport qtspeech qtwebsockets qtwebengine qtshadertools qtwebchannel'
- name: Configure SDRangel
run: |
mkdir build && cd build
cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_QT6=ON -DCMAKE_BUILD_TYPE=Release -DDEBUG_OUTPUT=ON -DENABLE_USRP=ON -DENABLE_MIRISDR=OFF -DBUILD_SERVER=OFF -DENABLE_EXTERNAL_LIBRARIES=ON -DBUNDLE=ON -DPKG_CONFIG_USE_CMAKE_PREFIX_PATH=TRUE -DPYTHON_EXECUTABLE=/usr/local/bin/python3.12
- name: Build SDRangel on Mac
run: |
cd build
make -j3 package
- name: Get version
id: get_version
run: |
if [[ "${{github.ref_name}}" == "mac_ci" ]]; then
echo "version=$(echo ${{github.sha}} | cut -c1-7)" >> $GITHUB_OUTPUT
else
echo "version=$(echo ${{github.ref_name}} | cut -c2-)" >> $GITHUB_OUTPUT
fi
- name: Get filename
id: get_filename
run: echo "filename=$(grep CPACK_PACKAGE_FILE_NAME build/CMakeCache.txt | cut -d "=" -f2)" >> $GITHUB_OUTPUT
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: sdrangel-${{ steps.get_version.outputs.version }}-macarm64.dmg
path: ${{ github.workspace }}/build/${{ steps.get_filename.outputs.filename }}.dmg
- name: Upload release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: ${{ github.workspace }}/build/${{ steps.get_filename.outputs.filename }}.dmg
7 changes: 2 additions & 5 deletions .github/workflows/sdrangel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ jobs:
files: ${{ github.workspace }}/build/sdrangel-${{ steps.get_version.outputs.version }}-win64.exe

build_mac:
runs-on: macos-13
runs-on: macos-14
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -126,10 +126,7 @@ jobs:
- name: Configure SDRangel
run: |
mkdir build && cd build
cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_QT6=ON -DCMAKE_BUILD_TYPE=Release -DARCH_OPT=nehalem -DDEBUG_OUTPUT=ON -DENABLE_CHANNELRX_DEMODDATV=OFF -DENABLE_CHANNELTX_MODDATV=OFF -DENABLE_MIRISDR=OFF -DBUILD_SERVER=OFF -DENABLE_EXTERNAL_LIBRARIES=AUTO -DBUNDLE=ON -DPKG_CONFIG_USE_CMAKE_PREFIX_PATH=TRUE -DCMAKE_PREFIX_PATH="/usr/local/opt/ffmpeg@5/"
- name: Get filename
id: get_filename
run: echo "filename=$(grep CPACK_PACKAGE_FILE_NAME build/CMakeCache.txt | cut -d "=" -f2)" >> $GITHUB_OUTPUT
cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_QT6=ON -DCMAKE_BUILD_TYPE=Release -DDEBUG_OUTPUT=ON -DENABLE_CHANNELRX_DEMODDATV=OFF -DENABLE_CHANNELTX_MODDATV=OFF -DENABLE_MIRISDR=OFF -DBUILD_SERVER=OFF -DENABLE_EXTERNAL_LIBRARIES=AUTO -DBUNDLE=ON -DPKG_CONFIG_USE_CMAKE_PREFIX_PATH=TRUE -DCMAKE_PREFIX_PATH="/usr/local/opt/ffmpeg@5/"
- name: Build SDRangel on Mac
run: |
cd build
Expand Down
5 changes: 3 additions & 2 deletions cmake/cpack/deploy_mac.cmake.in
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
# This CPACK_PRE_BUILD_SCRIPTS script is used to copy all required Qt and other 3rd party libraries (SDR drivers and codecs) in to the .app bundle
# It is run in a staging area (${CPACK_TEMPORARY_INSTALL_DIRECTORY}/SDRangel.app) after all targets have been installed (E.g. sdrangel exe and plugins)
# The copying of frameworks and libraries is mostly done by 'macdeployqt', however, in order for 'macdeployqt' to copy libraries built by external/CMakeLists.txt,
# we first need to add RPATHs into the libraries giving the locations of any libraries they might depend on.
# we first need to add RPATHs into the libraries giving the locations of any libraries they might depend on.
# These paths are in the variable MACOS_EXTERNAL_LIBS_FIXUP set in externals/CMakeLists.txt
# Is there an easier way to this?

# Copy executable that will be run when icon in /Applications is clicked
message ("Copying default executable to SDRangel.app/Contents/MacOS/SDRangel")
execute_process (COMMAND mkdir ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/SDRangel.app/Contents/MacOS/)
execute_process (COMMAND cp /opt/build/sdrangel/build/sdrangel ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/SDRangel.app/Contents/MacOS/SDRangel)
execute_process (COMMAND pwd)
execute_process (COMMAND cp sdrangel ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/SDRangel.app/Contents/MacOS/SDRangel)


# Add RPATHS to libraries so macdeployqt can find out and copy all dependencies
Expand Down
16 changes: 6 additions & 10 deletions external/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,9 @@ set(SOAPYSDR_REMOTE_TAG "soapy-remote-0.5.1")
set(AIRSPY_TAG "37c768ce9997b32e7328eb48972a7fda0a1f8554")
set(HACKRF_TAG "v2022.09.1")
set(LIBXML2_TAG "v2.10.4")
set(UHD_TAG "v4.6.0.0")
if (APPLE AND (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL x86_64))
# UHD fails to load with 1.80+
set(BOOST_TAG "1.78.0")
set(BOOST_TAG2 "1_78_0")
else()
set(BOOST_TAG "1.83.0")
set(BOOST_TAG2 "1_83_0")
endif()
set(UHD_TAG "v4.7.0.0")
set(BOOST_TAG "1.86.0")
set(BOOST_TAG2 "1_86_0")

# For some external project macros
include(ExternalProject)
Expand Down Expand Up @@ -546,7 +540,7 @@ endif (NOT FFMPEG_FOUND AND NOT USE_PRECOMPILED_LIBS)
if (NOT OpenCV_FOUND AND NOT USE_PRECOMPILED_LIBS AND ENABLE_CHANNELTX_MODATV)
ExternalProject_Add(opencv
GIT_REPOSITORY https://github.com/opencv/opencv.git
GIT_TAG 4.5.5
GIT_TAG 4.10.0
DEPENDS "${FFMPEG_DEPENDS}"
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/opencv"
CMAKE_ARGS ${COMMON_CMAKE_ARGS} -DWITH_FFMPEG=ON -DCMAKE_PREFIX_PATH=${FFMPEG_INSTALL_DIR}
Expand Down Expand Up @@ -1578,6 +1572,8 @@ if (WIN32 OR APPLE)
-DLIBUSB_LIBRARIES=${LIBUSB_LIBRARIES}
-DLIBUSB_INCLUDE_DIR=${LIBUSB_INCLUDE_DIR}
${UHD_PYTHON_ARGS}
-DPython3_FIND_FRAMEWORK=NEVER
-DENABLE_PYTHON_API=OFF
-DCMAKE_INSTALL_NAME_DIR=<INSTALL_DIR>/lib
TEST_COMMAND ""
)
Expand Down
6 changes: 3 additions & 3 deletions plugins/samplesink/usrpoutput/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,14 @@ else()
set(INSTALL_FOLDER ${INSTALL_PLUGINSSRV_DIR})
endif()

if(UHD_EXTERNAL)
add_dependencies(${TARGET_NAME} uhd)
endif()
if(NOT Qt6_FOUND)
add_library(${TARGET_NAME} ${usrpoutput_SOURCES})
else()
qt_add_plugin(${TARGET_NAME} CLASS_NAME USRPOutputPlugin ${usrpoutput_SOURCES})
endif()
if(UHD_EXTERNAL)
add_dependencies(${TARGET_NAME} uhd)
endif()

if(NOT BUILD_SHARED_LIBS)
set_property(GLOBAL APPEND PROPERTY STATIC_PLUGINS_PROPERTY ${TARGET_NAME})
Expand Down
Loading