Skip to content

Commit 2b659e2

Browse files
committed
修改linux构建文件以确保拿到libmpv2 2026.0129
1 parent 6a43b2c commit 2b659e2

File tree

2 files changed

+107
-4
lines changed

2 files changed

+107
-4
lines changed

.github/actions/build-linux/action.yml

Lines changed: 106 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,99 @@ runs:
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}"

.github/workflows/build-linux.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ on:
1313
jobs:
1414
build:
1515
name: Build Linux Packages (amd64)
16-
runs-on: ubuntu-22.04
16+
runs-on: ubuntu-24.04
1717
outputs:
1818
version: ${{ steps.setup.outputs.version }}
1919
artifact-name: release-Linux-amd64

0 commit comments

Comments
 (0)