Merge pull request #503 from rerdavies/dev_arch

Add support for Arch
This commit is contained in:
Robin Davies
2026-06-08 19:12:51 -04:00
committed by GitHub
11 changed files with 91 additions and 20 deletions
+22 -6
View File
@@ -5,15 +5,33 @@ project(pipedal
HOMEPAGE_URL "https://rerdavies.github.io/pipedal" HOMEPAGE_URL "https://rerdavies.github.io/pipedal"
) )
execute_process( COMMAND dpkg --print-architecture COMMAND tr -d '\n' OUTPUT_VARIABLE DEBIAN_ARCHITECTURE )
set (DISPLAY_VERSION "PiPedal v2.0.105-Release") set (DISPLAY_VERSION "PiPedal v2.0.105-Release")
set (PACKAGE_ARCHITECTURE ${DEBIAN_ARCHITECTURE})
set (CMAKE_INSTALL_PREFIX "/usr/") option(PIPEDAL_DISABLE_COPYRIGHT_BUILD "Skip generation of copyright notices (use on non-Debian distros)" OFF)
option(PIPEDAL_EXCLUDE_TESTS "Exclude test targets from default build" OFF)
set(PIPEDAL_T3K_PUBLISHABLE_KEY "t3k_pub_bHrH8btdwXXTtxz5ryEU8sNLF-2TGRT9") set(PIPEDAL_T3K_PUBLISHABLE_KEY "t3k_pub_bHrH8btdwXXTtxz5ryEU8sNLF-2TGRT9")
# Determine Debian-compatible architecture name (portable across distros)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
set(DEBIAN_ARCHITECTURE "amd64")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
set(DEBIAN_ARCHITECTURE "arm64")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "armv7l")
set(DEBIAN_ARCHITECTURE "armhf")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686")
set(DEBIAN_ARCHITECTURE "i386")
else()
execute_process(COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE UNAME_M)
message(FATAL_ERROR "Cannot determine Debian architecture from CMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR} (uname -m: ${UNAME_M})")
endif()
message(STATUS "DEBIAN_ARCHITECTURE=${DEBIAN_ARCHITECTURE}")
set (PACKAGE_ARCHITECTURE ${DEBIAN_ARCHITECTURE})
set (CMAKE_INSTALL_PREFIX "/usr/")
set (LIBZIP_DO_INSTALL OFF CACHE BOOL "Disable libzip install" FORCE) set (LIBZIP_DO_INSTALL OFF CACHE BOOL "Disable libzip install" FORCE)
set (SQLITECPP_INSTALL OFF CACHE BOOL "Disable SQLiteCpp install" FORCE) set (SQLITECPP_INSTALL OFF CACHE BOOL "Disable SQLiteCpp install" FORCE)
@@ -24,8 +42,6 @@ set(CPACK_SOURCE_IGNORE_FILES
"*.a;sqlite3.h;$(CPACK_SOURCE_IGNORE_FILES)" "*.a;sqlite3.h;$(CPACK_SOURCE_IGNORE_FILES)"
) )
set (PIPEDAL_EXCLUDE_TESTS false)
include(CTest) include(CTest)
enable_testing() enable_testing()
+1 -1
View File
@@ -97,7 +97,7 @@ add_library(PiPedalCommon STATIC
ss.hpp ss.hpp
) )
target_include_directories(PiPedalCommon PUBLIC "include" ${LIBNL3_INCLUDE_DIRS}) target_include_directories(PiPedalCommon PUBLIC "include" ${LIBNL3_INCLUDE_DIRS})
target_link_libraries(PiPedalCommon PUBLIC ${LIBNL3_LIBRARIES} sdbus-c++-objlib target_link_libraries(PiPedalCommon PUBLIC ${LIBNL3_LIBRARIES} sdbus-c++-objlib asound
) )
+1
View File
@@ -3,6 +3,7 @@
#include <sdbus-c++/IConnection.h> #include <sdbus-c++/IConnection.h>
#include <poll.h> #include <poll.h>
#include <sys/eventfd.h> #include <sys/eventfd.h>
#include <unistd.h>
#include "ss.hpp" #include "ss.hpp"
#include <chrono> #include <chrono>
#include <cassert> #include <cassert>
+22
View File
@@ -18,6 +18,7 @@ please refer to the `node.js` website for instructions on [how to install the la
Run the following commands to install dependent libraries required by the PiPedal build. Run the following commands to install dependent libraries required by the PiPedal build.
Ubuntu:
sudo apt update sudo apt update
sudo apt upgrade sudo apt upgrade
@@ -28,6 +29,27 @@ Run the following commands to install dependent libraries required by the PiPeda
libgoogle-perftools-dev \ libgoogle-perftools-dev \
libpipewire-0.3-dev libbz2-dev libssl-dev librsvg2-dev libpipewire-0.3-dev libbz2-dev libssl-dev librsvg2-dev
Arch:
sudo pacman -S --needed lilv boost systemd catch2 alsa-lib \
util-linux avahi networkmanager icu libzip gperftools \
pipewire bzip2 openssl librsvg sdbus-cpp
There is one AUR package:
sudo paru -S authbind
Note: in Arch, tests and copyright notices won't work, so they need to be disabled with cmake arguments. Add this to your .vscode/settings.json file:
```json
{
"cmake.configureSettings": {
"PIPEDAL_EXCLUDE_TESTS": "ON",
"DISABLE_COPYRIGHT_BUILD": "ON"
},
...
}
```
### Installing Sources ### Installing Sources
+16 -3
View File
@@ -1,7 +1,20 @@
#!/usr/bin/bash #!/usr/bin/bash
rm -rf build/lv2_x64 rm -rf build/lv2_x64
mkdir build/lv2_x64 mkdir -p build/lv2_x64/pkg
mkdir build/lv2_x64/pkg # Extract .deb using ar + tar (portable, no dpkg-deb needed)
dpkg-deb -x lv2/x86_64/toobamp_*_amd64.deb build/lv2_x64/pkg cd build/lv2_x64
ar x ../../lv2/x86_64/toobamp_*_amd64.deb
if [ -f data.tar.zst ]; then
tar --zstd -xf data.tar.zst -C pkg
elif [ -f data.tar.xz ]; then
tar -xJf data.tar.xz -C pkg
elif [ -f data.tar.gz ]; then
tar -xzf data.tar.gz -C pkg
else
echo "Error: cannot find data.tar.* in the .deb package"
exit 1
fi
rm -f control.tar.* data.tar.* debian-binary
cd "$OLDPWD"
+2
View File
@@ -25,5 +25,7 @@ option(BUILD_REGRESS "Build regression tests" OFF)
option(BUILD_OSSFUZZ "Build fuzzers for ossfuzz" OFF) option(BUILD_OSSFUZZ "Build fuzzers for ossfuzz" OFF)
option(BUILD_EXAMPLES "Build examples" OFF) option(BUILD_EXAMPLES "Build examples" OFF)
option(BUILD_DOC "Build documentation" OFF) option(BUILD_DOC "Build documentation" OFF)
# Ensure BUILD_SHARED_LIBS is ON for libzip (SQLiteCpp may have set it OFF)
set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries (.so) instead of static ones (.a)" FORCE)
add_subdirectory("libzip") add_subdirectory("libzip")
+1
View File
@@ -19,6 +19,7 @@
#include "AuxIn.hpp" #include "AuxIn.hpp"
#include <unistd.h>
using namespace pipedal; using namespace pipedal;
int main(int argc, char**argv) { int main(int argc, char**argv) {
+20 -6
View File
@@ -155,8 +155,20 @@ else()
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-multichar -Wno-psabi") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-multichar -Wno-psabi")
endif() endif()
execute_process( COMMAND dpkg --print-architecture COMMAND tr -d '\n' OUTPUT_VARIABLE DEBIAN_ARCHITECTURE ) # Determine Debian-compatible architecture name (portable across distros)
message(STATUS DEBIAN_ARCHITECTURE="${DEBIAN_ARCHITECTURE}") if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
set(DEBIAN_ARCHITECTURE "amd64")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
set(DEBIAN_ARCHITECTURE "arm64")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "armv7l")
set(DEBIAN_ARCHITECTURE "armhf")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686")
set(DEBIAN_ARCHITECTURE "i386")
else()
execute_process(COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE UNAME_M)
message(FATAL_ERROR "Cannot determine Debian architecture from CMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR} (uname -m: ${UNAME_M})")
endif()
message(STATUS "DEBIAN_ARCHITECTURE=${DEBIAN_ARCHITECTURE}")
add_compile_definitions(DEBIAN_ARCHITECTURE="${DEBIAN_ARCHITECTURE}") add_compile_definitions(DEBIAN_ARCHITECTURE="${DEBIAN_ARCHITECTURE}")
@@ -856,8 +868,8 @@ elseif(EXISTS "/usr/share/doc/libboost1.71-dev")
set (BOOST_COPYRIGHT_DIR "libboost1.71-dev") set (BOOST_COPYRIGHT_DIR "libboost1.71-dev")
elseif(EXISTS "/usr/share/doc/libboost1.67-dev") elseif(EXISTS "/usr/share/doc/libboost1.67-dev")
set (BOOST_COPYRIGHT_DIR "libboost1.67-dev") set (BOOST_COPYRIGHT_DIR "libboost1.67-dev")
else() # else()
message(FATAL_ERROR "Boost libary version has changed. Please update me.") # message(FATAL_ERROR "Boost libary version has changed. Please update me.")
endif() endif()
@@ -871,10 +883,12 @@ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Updating copyright notices." COMMENT "Updating copyright notices."
) )
add_custom_target ( if(NOT PIPEDAL_DISABLE_COPYRIGHT_BUILD)
add_custom_target (
CopyrightBuild ALL CopyrightBuild ALL
DEPENDS ${REACT_NOTICES_FILE} DEPENDS ${REACT_NOTICES_FILE}
) )
endif()
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.31) if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.31)
cmake_policy(SET CMP0177 NEW) cmake_policy(SET CMP0177 NEW)
+1
View File
@@ -21,6 +21,7 @@
#include "util.hpp" #include "util.hpp"
#include <stdexcept> #include <stdexcept>
#include <iostream> #include <iostream>
#include <mutex>
#include "ss.hpp" #include "ss.hpp"
#include "MimeTypes.hpp" #include "MimeTypes.hpp"
+1
View File
@@ -55,6 +55,7 @@
#include <atomic> #include <atomic>
#include "BootConfig.hpp" #include "BootConfig.hpp"
#include <array> #include <array>
#include <unistd.h>
#include "CommandLineParser.hpp" #include "CommandLineParser.hpp"
#include "PrettyPrinter.hpp" #include "PrettyPrinter.hpp"
#include "SysExec.hpp" #include "SysExec.hpp"