5353 chmod +x build_and_copy_web.sh
5454 ./build_and_copy_web.sh
5555
56+ - name : Download bundled libmpv2
57+ shell : bash
58+ run : |
59+ set -e
60+ ARCH="${{ inputs.arch }}"
61+ LIBMPV_ROOT="${RUNNER_TEMP}/libmpv-${ARCH}"
62+ LIBMPV_PKG_DIR="${RUNNER_TEMP}/libmpv-pkgs-${ARCH}"
63+ LIBMPV_PKGCONFIG_DIR="${RUNNER_TEMP}/libmpv-pkgconfig-${ARCH}"
64+ mkdir -p "${LIBMPV_ROOT}" "${LIBMPV_PKG_DIR}" "${LIBMPV_PKGCONFIG_DIR}"
65+
66+ case "${ARCH}" in
67+ amd64)
68+ APT_ARCH="amd64"
69+ APT_MIRROR="http://archive.ubuntu.com/ubuntu"
70+ TRIPLET="x86_64-linux-gnu"
71+ ;;
72+ arm64)
73+ APT_ARCH="arm64"
74+ APT_MIRROR="http://ports.ubuntu.com/ubuntu-ports"
75+ TRIPLET="aarch64-linux-gnu"
76+ ;;
77+ *)
78+ echo "Unsupported arch: ${ARCH}"
79+ exit 1
80+ ;;
81+ esac
82+
83+ LIBMPV_APT_LIST="${RUNNER_TEMP}/libmpv-${ARCH}.list"
84+ cat > "${LIBMPV_APT_LIST}" <<EOF
85+ deb [arch=${APT_ARCH}] ${APT_MIRROR} noble main universe
86+ deb [arch=${APT_ARCH}] ${APT_MIRROR} noble-updates main universe
87+ deb [arch=${APT_ARCH}] ${APT_MIRROR} noble-security main universe
88+ EOF
89+
90+ sudo apt-get update \
91+ -o Dir::Etc::sourcelist="${LIBMPV_APT_LIST}" \
92+ -o Dir::Etc::sourceparts="-" \
93+ -o APT::Get::List-Cleanup=0
94+
95+ (
96+ cd "${LIBMPV_PKG_DIR}"
97+ sudo apt-get download \
98+ -o Dir::Etc::sourcelist="${LIBMPV_APT_LIST}" \
99+ -o Dir::Etc::sourceparts="-" \
100+ -o APT::Get::List-Cleanup=0 \
101+ libmpv2 libmpv-dev
102+ )
103+
104+ for pkg in "${LIBMPV_PKG_DIR}"/libmpv2_*.deb "${LIBMPV_PKG_DIR}"/libmpv-dev_*.deb; do
105+ if [ ! -f "${pkg}" ]; then
106+ echo "Missing package: ${pkg}"
107+ exit 1
108+ fi
109+ dpkg-deb -x "${pkg}" "${LIBMPV_ROOT}"
110+ done
111+
112+ LIBMPV_LIB_DIR="${LIBMPV_ROOT}/usr/lib/${TRIPLET}"
113+ if [ ! -d "${LIBMPV_LIB_DIR}" ]; then
114+ LIBMPV_LIB_DIR="${LIBMPV_ROOT}/usr/lib"
115+ fi
116+
117+ MPV_PC_SOURCE="${LIBMPV_LIB_DIR}/pkgconfig/mpv.pc"
118+ if [ ! -f "${MPV_PC_SOURCE}" ]; then
119+ MPV_PC_SOURCE="${LIBMPV_ROOT}/usr/lib/pkgconfig/mpv.pc"
120+ fi
121+ if [ ! -f "${MPV_PC_SOURCE}" ]; then
122+ echo "mpv.pc not found in downloaded libmpv-dev."
123+ exit 1
124+ fi
125+
126+ cp "${MPV_PC_SOURCE}" "${LIBMPV_PKGCONFIG_DIR}/mpv.pc"
127+ sed -i \
128+ -e "s|^prefix=.*|prefix=${LIBMPV_ROOT}/usr|" \
129+ -e "s|^libdir=.*|libdir=${LIBMPV_LIB_DIR}|" \
130+ -e "s|^includedir=.*|includedir=${LIBMPV_ROOT}/usr/include|" \
131+ "${LIBMPV_PKGCONFIG_DIR}/mpv.pc"
132+
133+ if ! find "${LIBMPV_LIB_DIR}" -name "libmpv.so.*" -type f | grep -q .; then
134+ echo "Downloaded libmpv libraries not found in ${LIBMPV_LIB_DIR}"
135+ exit 1
136+ fi
137+
138+ echo "LIBMPV_ROOT=${LIBMPV_ROOT}" >> "$GITHUB_ENV"
139+ echo "LIBMPV_LIB_DIR=${LIBMPV_LIB_DIR}" >> "$GITHUB_ENV"
140+ echo "LIBMPV_PKGCONFIG_DIR=${LIBMPV_PKGCONFIG_DIR}" >> "$GITHUB_ENV"
141+
56142 - name : Build Linux
57143 shell : bash
58144 run : |
145+ if [ -n "${LIBMPV_PKGCONFIG_DIR:-}" ]; then
146+ export PKG_CONFIG_PATH="${LIBMPV_PKGCONFIG_DIR}${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}"
147+ export LD_LIBRARY_PATH="${LIBMPV_LIB_DIR}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
148+ fi
59149 flutter build linux --release
60150
61151 - name : Linux packaging and cleanup
@@ -70,19 +160,32 @@ runs:
70160 FLUTTER_ARCH_DIR="x64"
71161 RPM_ARCH_DIR="x86_64"
72162 BUILD_APPIMAGE=true
73- LIB_SEARCH_DIRS="/usr/lib"
163+ LIB_SEARCH_DIRS=""
164+ if [ -n "${LIBMPV_LIB_DIR:-}" ] && [ -d "${LIBMPV_LIB_DIR}" ]; then
165+ LIB_SEARCH_DIRS="${LIBMPV_LIB_DIR}"
166+ if [ -n "${LIBMPV_ROOT:-}" ] && [ -d "${LIBMPV_ROOT}/usr/lib" ] && [ "${LIBMPV_ROOT}/usr/lib" != "${LIBMPV_LIB_DIR}" ]; then
167+ LIB_SEARCH_DIRS="${LIB_SEARCH_DIRS} ${LIBMPV_ROOT}/usr/lib"
168+ fi
169+ fi
170+ if [ -z "${LIB_SEARCH_DIRS}" ]; then
171+ LIB_SEARCH_DIRS="/usr/lib"
172+ fi
74173
75174 case "${ARCH}" in
76175 amd64)
77176 FLUTTER_ARCH_DIR="x64"
78177 RPM_ARCH_DIR="x86_64"
79- LIB_SEARCH_DIRS="${LIB_SEARCH_DIRS} /usr/lib/x86_64-linux-gnu"
178+ if [ -z "${LIBMPV_LIB_DIR:-}" ]; then
179+ LIB_SEARCH_DIRS="${LIB_SEARCH_DIRS} /usr/lib/x86_64-linux-gnu"
180+ fi
80181 ;;
81182 arm64)
82183 FLUTTER_ARCH_DIR="arm64"
83184 RPM_ARCH_DIR="aarch64"
84185 BUILD_APPIMAGE=false
85- LIB_SEARCH_DIRS="${LIB_SEARCH_DIRS} /usr/lib/aarch64-linux-gnu"
186+ if [ -z "${LIBMPV_LIB_DIR:-}" ]; then
187+ LIB_SEARCH_DIRS="${LIB_SEARCH_DIRS} /usr/lib/aarch64-linux-gnu"
188+ fi
86189 ;;
87190 *)
88191 echo "Unsupported arch: ${ARCH}"
0 commit comments