Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
63 changes: 0 additions & 63 deletions .github/workflows/installer.yml

This file was deleted.

6 changes: 3 additions & 3 deletions .github/workflows/testbench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
with: {fetch-depth: 0, filter: 'tree:0'}

- name: docker
run: docker pull thesofproject/sof && docker tag thesofproject/sof sof
run: docker pull thesofproject/sof:20250410_no-alsa && docker tag thesofproject/sof:20250410_no-alsa sof

- name: apt get
run: sudo apt-get update &&
Expand All @@ -48,10 +48,10 @@ jobs:
# testbench needs some topologies.
- name: build test topologies
run: CMAKE_BUILD_TYPE=Release ./scripts/docker-run.sh
./scripts/build-tools.sh -Y ||
./scripts/build-tools.sh -Y -A ||
VERBOSE=1 NO_PROCESSORS=1 USE_XARGS=no
CMAKE_BUILD_TYPE=Release ./scripts/docker-run.sh
./scripts/build-tools.sh -Y
./scripts/build-tools.sh -Y -A

- name: build testbench
run: ./scripts/rebuild-testbench.sh ||
Expand Down
125 changes: 125 additions & 0 deletions scripts/build-alsa-tools.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
#!/bin/bash
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2025 Intel Corporation. All rights reserved.

# fail immediately on any errors
set -e

# Array of ALSA Git repository URLs. Add or remove repositories as needed.
declare -a REPOS=(
"https://github.com/thesofproject/alsa-lib.git"
"https://github.com/thesofproject/alsa-utils.git"
# Add more repositories here...
)

# Commit ID to check for (optional). If specified, the script will update
# the repository if this commit ID is not found. Leave empty to skip.
declare -a COMMIT_ID=(
"df8f1cc1ec9d9ee15be5e2c23ad25b9389fd8766"
"09550cd393b1a7d307ee6f26637b1ed7bd275e38"
)

# Directory where repositories will be cloned/updated.
if [[ -z "$SOF_WORKSPACE" ]]; then
# Environment variable is empty or unset so use default
BASE_DIR="$HOME/work"
else
# Environment variable exists and has a value
BASE_DIR="$SOF_WORKSPACE"
fi

# Arguments to pass to ./configure for each repository. Add or remove
declare -a CONFIGURE_ARGS=(
"--prefix=${BASE_DIR}/tools"
"--prefix=${BASE_DIR}/tools \
--with-alsa-prefix=${BASE_DIR}/tools \
--with-alsa-inc-prefix=${BASE_DIR}/tools/include \
--with-sysroot=${BASE_DIR}/tools \
--with-udev-rules-dir=${BASE_DIR}/tools \
PKG_CONFIG_PATH=${BASE_DIR}/tools \
LDFLAGS=-L${BASE_DIR}/tools/lib \
--with-asound-state-dir=${BASE_DIR}/tools/var/lib/alsa \
--with-systemdsystemunitdir=${BASE_DIR}/tools/lib/systemd/system"
)

# Arguments to pass to make for each repository. Add or remove arguments as needed.
declare -a TARGET_ARGS=(
"--disable-old-symbols"
"--enable-alsatopology"
)

# Function to check if a commit ID exists in a repository
check_commit() {
local repo_dir="$1"
local commit_id="$2"

if [ -z "$commit_id" ]; then
return 0 # Skip check if no commit ID is provided
fi

if ! git -C "$repo_dir" rev-parse --quiet --verify "$commit_id" >/dev/null 2>&1; then
return 1 # Commit ID not found
else
return 0 # Commit ID found
fi
}


# Function to update the repository
update_repo() {
local repo_dir="$1"
echo "Updating repository: $repo_dir"
git -C "$repo_dir" fetch --all
git -C "$repo_dir" pull
}

# Function to build and install the repository
build_and_install() {
local repo_dir="$1"
local configure_args="$2"
local target_args="$3"

echo "Building and installing: $repo_dir $configure_args $target_args"

if [ ! -f "$repo_dir/gitcompile" ]; then
echo "Error: gitcompile not found in $repo_dir" >&2
exit 1
fi

# if Makefile exists then we can just run make
if [ ! -f "$repo_dir/Makefile" ]; then
(cd "$repo_dir" && ./gitcompile $configure_args $target_args) || \
{ echo "configure failed in $repo_dir"; exit 1; }
else
(cd "$repo_dir" && make -j) || { echo "make failed in $repo_dir"; exit 1; }
fi

(cd "$repo_dir" && make install) || { echo "make install failed in $repo_dir"; exit 1; }

echo "Build and installation complete for $repo_dir"
}

# Main script logic
mkdir -p "$BASE_DIR"

for ((i = 0; i < ${#REPOS[@]}; i++)); do
echo "Counter: $i, Value: ${REPOS[i]}"
repo_url=${REPOS[i]}

repo_name=$(basename "$repo_url" .git) # Extract repo name
repo_dir="$BASE_DIR/$repo_name"

if [ ! -d "$repo_dir" ]; then
echo "Cloning repository: $repo_url"
git clone "$repo_url" "$repo_dir" || { echo "git clone failed for $repo_url"; exit 1; }
elif ! check_commit "$repo_dir" "${COMMIT_ID[i]}"; then
update_repo "$repo_dir"
else
echo "Repository $repo_name is up to date."
fi

build_and_install "$repo_dir" "${CONFIGURE_ARGS[i]}"

done

echo "All repositories processed."
11 changes: 9 additions & 2 deletions scripts/build-tools.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Attention: the list of selected shortcuts below is _not_ exhaustive. To
build _everything_ don't select any particular target; this will build
CMake's default target "ALL".

usage: $0 [-c|-f|-h|-l|-p|-t|-T|-X|-Y]
usage: $0 [-c|-f|-h|-l|-p|-t|-T|-X|-Y|-A]
-h Display help

-c Rebuild ctl/
Expand All @@ -26,6 +26,7 @@ usage: $0 [-c|-f|-h|-l|-p|-t|-T|-X|-Y]
-X Rebuild topology1 only
-Y Rebuild topology2 only
-t Rebuild test/topology/ (or tools/test/topology/tplg-build.sh directly)
-A Clone and rebuild local ALSA lib and utils.

-C No build, only CMake re-configuration. Shows CMake targets.
EOFUSAGE
Expand Down Expand Up @@ -106,6 +107,7 @@ main()
fi

DO_BUILD_ctl=false
DO_BUILD_alsa=false
DO_BUILD_logger=false
DO_BUILD_probes=false
DO_BUILD_tests=false
Expand All @@ -118,7 +120,7 @@ main()

# eval is a sometimes necessary evil
# shellcheck disable=SC2034
while getopts "cfhlptTCXY" OPTION; do
while getopts "cfhlptTCXYA" OPTION; do
case "$OPTION" in
c) DO_BUILD_ctl=true ;;
l) DO_BUILD_logger=true ;;
Expand All @@ -128,12 +130,17 @@ main()
X) DO_BUILD_topologies1=true ;;
Y) DO_BUILD_topologies2=true ;;
C) CMAKE_ONLY=true ;;
A) DO_BUILD_alsa=true ;;
h) print_usage; exit 1;;
*) print_usage; exit 1;;
esac
done
shift "$((OPTIND - 1))"

if "$DO_BUILD_alsa"; then
$SOF_TOP/scripts/build-alsa-tools.sh
fi

if "$CMAKE_ONLY"; then
reconfigure_build
print_build_info
Expand Down
3 changes: 2 additions & 1 deletion scripts/docker-run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,6 @@ docker run -i -v "${SOF_TOP}":/home/sof/work/sof.git \
--env VERBOSE \
--env http_proxy="$http_proxy" \
--env https_proxy="$https_proxy" \
--env SOF_WORKSPACE=/home/sof/work/ \
$SOF_DOCKER_RUN \
thesofproject/sof:latest ./scripts/sudo-cwd.sh "$@"
thesofproject/sof:20250410_no-alsa ./scripts/sudo-cwd.sh "$@"
15 changes: 9 additions & 6 deletions tools/topology/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
set(SOF_TOPOLOGY_BINARY_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
set(SOF_ALSA_TOOLS_DIR "${SOF_ROOT_SOURCE_DIRECTORY}/../tools/bin")
set(ALSATPLG_CMD "${SOF_ALSA_TOOLS_DIR}/alsatplg")

message(WARNING "DEBUG: alsatplg path=${ALSATPLG_CMD}")

function(alsatplg_version OUT_STATUS OUT_VERSION)
execute_process(COMMAND alsatplg --version
execute_process(COMMAND ${ALSATPLG_CMD} --version
RESULT_VARIABLE status
OUTPUT_VARIABLE stdout
OUTPUT_STRIP_TRAILING_WHITESPACE)
message(DEBUG "alsatplg --version: status=${status}, output=${stdout}")
message(DEBUG "${ALSATPLG_CMD} --version: status=${status}, output=${stdout}")

set(${OUT_STATUS} "${status}" PARENT_SCOPE)

# Some error messages have already been printed on stderr
if(NOT status EQUAL 0)
message(WARNING "alsatplg --version returned status: ${status},
message(WARNING "${ALSATPLG_CMD} --version returned status: ${status},
${stdout}")
return()
endif()
Expand All @@ -32,7 +35,7 @@ endfunction()
# Longer story in #5192.
alsatplg_version(STATUS ALSATPLG_VERSION_NUMBER)
if(NOT STATUS EQUAL 0)
message(WARNING "alsatplg failed: ${STATUS}; all topologies skipped")
message(WARNING "${ALSATPLG_CMD} failed: ${STATUS}; all topologies skipped")
return()
else()
if(${ALSATPLG_VERSION_NUMBER} VERSION_LESS "1.2.5")
Expand Down Expand Up @@ -67,7 +70,7 @@ macro(add_alsatplg_command)
# permissions are hardcoded and only the user can read
# the -o(utput) file.
# See bug https://github.com/alsa-project/alsa-utils/issues/126
COMMAND alsatplg \$\${VERBOSE:+-v 1} -c ${ARGV0} -o ${ARGV1}
COMMAND ${ALSATPLG_CMD} \$\${VERBOSE:+-v 1} -c ${ARGV0} -o ${ARGV1}
USES_TERMINAL
)
endmacro()
Expand All @@ -94,7 +97,7 @@ macro(add_alsatplg2_command conf_header conf_target input_name output_name inclu
COMMAND cat ${conf_header} ${input_name}.conf > ${output_name}.conf

# -p to pre-process Topology2.0 conf file
COMMAND ALSA_CONFIG_DIR=${CMAKE_SOURCE_DIR}/topology/topology2 alsatplg \$\${VERBOSE:+-v 1}
COMMAND ALSA_CONFIG_DIR=${CMAKE_SOURCE_DIR}/topology/topology2 ${ALSATPLG_CMD} \$\${VERBOSE:+-v 1}
-I ${include_path} -D "'${defines}'" -p -c ${output_name}.conf -o ${output_name}.tplg
USES_TERMINAL
)
Expand Down
Loading