Skip to content

Commit

Permalink
CI build pipewire and adapt AppImage
Browse files Browse the repository at this point in the history
  • Loading branch information
rtbo committed Aug 15, 2024
1 parent 24ebae8 commit d0be1c9
Show file tree
Hide file tree
Showing 2 changed files with 101 additions and 1 deletion.
95 changes: 94 additions & 1 deletion buildscripts/ci/linux/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -116,12 +116,18 @@ apt_packages_ffmpeg=(
libswscale-dev
)

apt_packages_pw_deps=(
libdbus-1-dev
libudev-dev
)

sudo apt-get update
sudo apt-get install -y --no-install-recommends \
"${apt_packages_basic[@]}" \
"${apt_packages_standard[@]}" \
"${apt_packages_runtime[@]}" \
"${apt_packages_ffmpeg[@]}"
"${apt_packages_ffmpeg[@]}" \
"${apt_packages_pw_deps[@]}"

##########################################################################
# GET QT
Expand Down Expand Up @@ -198,9 +204,96 @@ if [[ ! -d "$ninja_dir" ]]; then
chmod +x $ninja_dir/ninja
fi
echo export PATH="${ninja_dir}:\${PATH}" >> ${ENV_FILE}
export PATH="${ninja_dir}:${PATH}" # needed to compile pipewire
echo "ninja version"
$ninja_dir/ninja --version

# MESON
# Get recent version of Meson (to build pipewire)
meson_version="1.1.1"
sudo python3 -m pip install meson==${meson_version}

##########################################################################
# BUILD PIPWIRE
##########################################################################

pw_version="1.0.4"
pw_src_dir="$BUILD_TOOLS/pw-src-${pw_version}"
pw_dist_dir="$BUILD_TOOLS/pw-dist-${pw_version}"
pw_url="https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/${pw_version}/pipewire-${pw_version}.tar.gz"
if [[ ! -d "${pw_src_dir}" ]]; then
mkdir -p "${pw_src_dir}"
wget -q --show-progress -O pw.tar.gz "${pw_url}"
tar -xzf pw.tar.gz -C "${pw_src_dir}" --strip-components=1
rm pw.tar.gz
pushd "${pw_src_dir}"

meson setup builddir \
--buildtype=debug \
--prefix=${pw_dist_dir} \
--libdir=${pw_dist_dir}/lib \
-Dexamples=disabled \
-Dtests=disabled \
-Dgstreamer=disabled \
-Dgstreamer-device-provider=disabled \
-Dsystemd=disabled \
-Dselinux=disabled \
-Dpipewire-alsa=disabled \
-Dpipewire-jack=disabled \
-Dpipewire-v4l2=disabled \
-Djack-devel=false \
-Dalsa=disabled \
-Daudiomixer=disabled \
-Daudioconvert=enabled \
-Dbluez5=disabled \
-Dcontrol=disabled \
-Daudiotestsrc=disabled \
-Djack=disabled \
-Dsupport=enabled \
-Devl=disabled \
-Dv4l2=disabled \
-Dvideoconvert=disabled \
-Dvideotestsrc=disabled \
-Dpw-cat=disabled \
-Dudev=disabled \
-Dsdl2=disabled \
-Dsndfile=disabled \
-Dlibmysofa=disabled \
-Dlibpulse=disabled \
-Droc=disabled \
-Decho-cancel-webrtc=disabled \
-Dlibusb=disabled \
-Dsession-managers=[] \
-Draop=disabled \
-Dlv2=disabled \
-Dx11=disabled \
-Dlibcanberra=disabled \
-Dlegacy-rtkit=false \
-Davb=disabled \
-Dflatpak=disabled \
-Dreadline=disabled \
-Dgsettings=disabled \
-Dcompress-offload=disabled \
-Drlimits-install=false \
-Dopus=disabled \
-Dlibffado=disabled \

meson compile -C builddir
popd
fi
echo "Built pipewire in ${pw_src_dir}/builddir"
if [[ ! -d "${pw_dist_dir}" ]]; then
pushd ${pw_src_dir}
meson install -C builddir
popd
fi
echo "Installed pipewire to ${pw_dist_dir}"

echo export PW_DIST_DIR="${pw_dist_dir}" >> ${ENV_FILE}
echo export PKG_CONFIG_PATH="${pw_dist_dir}/lib/pkgconfig:\${PKG_CONFIG_PATH}" >> ${ENV_FILE}
echo export LIBRARY_PATH="${pw_dist_dir}/lib:\${LIBRARY_PATH}" >> ${ENV_FILE}
echo export LD_LIBRARY_PATH="${pw_dist_dir}/lib:\${LD_LIBRARY_PATH}" >> ${ENV_FILE}

##########################################################################
# OTHER
##########################################################################
Expand Down
7 changes: 7 additions & 0 deletions buildscripts/ci/linux/tools/make_appimage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@ additional_libraries=(
# Report new additions at https://github.com/linuxdeploy/linuxdeploy/issues
fallback_libraries=(
libjack.so.0 # https://github.com/LMMS/lmms/pull/3958
libpipewire-0.3.so.0
)

# PREVIOUSLY EXTRACTED APPIMAGES
Expand Down Expand Up @@ -275,6 +276,12 @@ for fb_lib in "${fallback_libraries[@]}"; do
fallback_library "${fb_lib}"
done

# pipewire is still packaged by linuxdeploy,
# so we need to remove it as it is in the fallback mechanism
if [[ -f "${appdir}/lib/libpipewire-0.3.so.0" ]]; then
rm -f "${appdir}/lib/libpipewire-0.3.so.0"
fi

for name in "${extracted_appimages[@]}"; do
symlink="$(which "${name}")"
apprun="$(dirname "${symlink}")/$(readlink "${symlink}")"
Expand Down

0 comments on commit d0be1c9

Please sign in to comment.