meo-ai
LOW
maintainer Shekong
0 votes
scanned 2026-10-26 03:43:44.749651
Why flagged
Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.
Triggered rules
Low
Few votes, recently uploaded
zero_votes_recent
Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.
PKGBUILD
1
# Maintainer: MeoArch <https://github.com/QwQdoge>
2
_srcdir=meo-ai-fb9033d2dedac1cc25c030bb05196ee170f738ae
3
pkgname=meo-ai
4
pkgver=0.1.0beta2
5
pkgrel=6
6
pkgdesc="Meo AI desktop app and headless AgentService"
7
arch=('x86_64')
8
url='https://github.com/QwQdoge/meo-ai'
9
license=('GPL-3.0-or-later' 'MIT' 'BSD-3-Clause')
10
depends=('meo-account' 'meoui-qml>=1.0.4beta3' 'qt6-base' 'qt6-declarative'
11
'python' 'python-pip' 'python-openai' 'python-gobject' 'python-cairo' 'python-aiohttp' 'python-requests'
12
'python-pillow' 'python-tiktoken' 'python-dbus-next'
13
'python-numpy' 'python-pydub' 'python-audioop-lts'
14
'python-beautifulsoup4' 'python-cssselect' 'python-feedparser'
15
'python-jieba' 'python-lxml' 'python-lxml-html-clean' 'python-nltk'
16
'python-dateutil' 'python-yaml' 'python-tldextract' 'python-six'
17
'gtk4' 'libadwaita' 'gtksourceview5' 'webkitgtk-6.0' 'vte4')
18
makedepends=('cmake' 'ninja' 'qt6-tools' 'qt6-shadertools' 'meson' 'gettext'
19
'python-setuptools' 'python-wheel' 'nodejs' 'rust')
20
optdepends=('meo-settings: manage Meo Account and device AI connections'
21
'python-pyaudio: microphone input'
22
'python-mcp: external MCP tools')
23
options=('!debug')
24
source=('meo-ai-fb9033d2dedac1cc25c030bb05196ee170f738ae.tar.gz::https://codeload.github.com/QwQdoge/meo-ai/tar.gz/fb9033d2dedac1cc25c030bb05196ee170f738ae'
25
'org.meo.AI.desktop'
26
'newspaper3k-LICENSE'
27
'feedfinder2-LICENSE'
28
'tinysegmenter-LICENSE'
29
'runtime-sources.json'
30
'MeoUI-b8ed876b66a5e69fd4986385c734b1a83c567be7.tar.gz::https://codeload.github.com/QwQdoge/MeoUI/tar.gz/b8ed876b66a5e69fd4986385c734b1a83c567be7'
31
'feedfinder2-0.0.4.tar.gz::https://files.pythonhosted.org/packages/35/82/1251fefec3bb4b03fd966c7e7f7a41c9fc2bb00d823a34c13f847fd61406/feedfinder2-0.0.4.tar.gz'
32
'newspaper3k-0.2.8-py3-none-any.whl::https://files.pythonhosted.org/packages/d7/b9/51afecb35bb61b188a4b44868001de348a0e8134b4dfa00ffc191567c4b9/newspaper3k-0.2.8-py3-none-any.whl'
33
'tinysegmenter-0.3.tar.gz::https://files.pythonhosted.org/packages/17/82/86982e4b6d16e4febc79c2a1d68ee3b707e8a020c5d2bc4af8052d0f136a/tinysegmenter-0.3.tar.gz')
34
sha256sums=('4a3ae5e102249cf1ea7d319b9c21ff8f43d5a233ea7a179750f3d9b70d7e47ad'
35
'330e2822261054e9cb41a802cd51f7b4e1b3696e335a8b10cd6d91552cc11e74'
36
'662ea995a58f4d1138128ae1f44a91bccd4ddb114419d04446cf165442b8217c'
37
'dd878f923e4dc2e4ee6a4482fc00a94a933888c2ceb51db131827939a26739af'
38
'3ecf2511b2bfac0296d6d4efe236e323d8989b779e0dcce281f2482ebdd560af'
39
'f38110e262126c355bfe4f5ebe10b38dac960a00f1c20ea5f89f638a36f92706'
40
'bf371809a8bf657ccb6fb2da8d7fc18fa1f86bc02b036e117cea193eb2a0631a'
41
'3701ee01a6c85f8b865a049c30ba0b4608858c803fe8e30d1d289fdbe89d0efe'
42
'44a864222633d3081113d1030615991c3dbba87239f6bbf59d91240f71a22e3e'
43
'ed1f6d2e806a4758a73be589754384cbadadc7e1a414c81a166fc9adf2d40c6d')
44
noextract=('feedfinder2-0.0.4.tar.gz' 'newspaper3k-0.2.8-py3-none-any.whl' 'tinysegmenter-0.3.tar.gz')
45
46
prepare() {
47
ln -sfn "$srcdir/MeoUI-b8ed876b66a5e69fd4986385c734b1a83c567be7" "$srcdir/meoui"
48
mkdir -p "$srcdir/third-party"
49
cp -f "$srcdir/feedfinder2-0.0.4.tar.gz" "$srcdir/third-party/feedfinder2-0.0.4.tar.gz"
50
cp -f "$srcdir/newspaper3k-0.2.8-py3-none-any.whl" "$srcdir/third-party/newspaper3k-0.2.8-py3-none-any.whl"
51
cp -f "$srcdir/tinysegmenter-0.3.tar.gz" "$srcdir/third-party/tinysegmenter-0.3.tar.gz"
52
}
53
54
build() {
55
cmake -S "$srcdir/$_srcdir/meo" -B native-build -G Ninja \
56
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr \
57
-DMEO_UI_ROOT="$srcdir/meoui" -DBUILD_TESTING=OFF
58
cmake --build native-build --parallel 2
59
meson setup engine-build "$srcdir/$_srcdir" --prefix=/usr --libdir=lib -Dprofile=release
60
meson compile -C engine-build
61
# The cloud desktop app (desktop-rs) pins its crates, including the qtbridge git
62
# revision, in Cargo.lock. Fetch them here: release builds use --noextract, which
63
# skips prepare(); the compile itself then runs offline.
64
cargo fetch --locked --target "$(rustc -vV | sed -n 's/^host: //p')" \
65
--manifest-path "$srcdir/$_srcdir/meo/desktop-rs/Cargo.toml"
66
# rustc needs a larger stack for the shared core's large view builders in release mode.
67
# qtbridge compiles its C++ bridge through cc; makepkg's -flto would make that GCC LTO
68
# bitcode the Rust link step cannot read (undefined cxxbridge symbols), so not here.
69
CFLAGS="${CFLAGS//-flto=auto/}" CXXFLAGS="${CXXFLAGS//-flto=auto/}" LDFLAGS="${LDFLAGS//-flto=auto/}" \
70
RUST_MIN_STACK=33554432 CARGO_TARGET_DIR="$srcdir/cargo-target" \
71
cargo build --frozen --release -j 2 --manifest-path "$srcdir/$_srcdir/meo/desktop-rs/Cargo.toml"
72
}
73
74
package() {
75
# Do not install the add_subdirectory MeoUI dependency a second time.
76
DESTDIR="$pkgdir" cmake -DCMAKE_INSTALL_LOCAL_ONLY=TRUE -P native-build/cmake_install.cmake
77
DESTDIR="$pkgdir" meson install -C engine-build --no-rebuild
78
# These three pure-Python modules are absent from Arch's repositories.
79
# Stage their immutable upstream hashes, build offline, and keep them
80
# private to this application. All other dependencies are pacman-owned.
81
PIP_NO_INDEX=1 python -m pip install --no-deps --no-build-isolation \
82
--no-compile --target "$pkgdir/usr/share/newelle" \
83
"$srcdir/third-party/"*.whl "$srcdir/third-party/"*.tar.gz
84
# The inherited Meson launcher mode is owner-executable only (0544).
85
# Packaged launchers must also be executable by ordinary desktop users.
86
chmod 755 "$pkgdir/usr/bin/newelle" "$pkgdir/usr/bin/meo-agent-service" \
87
"$pkgdir/usr/bin/meo-agentd" "$pkgdir/usr/bin/meo-connect-device"
88
# The headless compatibility adapter imports src.*, while Meson installs
89
# the inherited engine under newelle/. Both names refer to one engine.
90
ln -s newelle "$pkgdir/usr/share/newelle/src"
91
# Meo AI is the desktop app on the shared Rust core (desktop-rs); it loads its QML
92
# from ../share/meo-ai-desktop/qml. It is the only Meo AI launcher and keeps the
93
# org.meo.AI id, so existing pins open it. The older native app and the Newelle
94
# engine stay installed without launchers: the live installer still runs
95
# `meo-ai --live-recovery`, and AgentService uses the engine.
96
install -Dm755 "$srcdir/cargo-target/release/meo-ai-desktop" "$pkgdir/usr/bin/meo-ai-desktop"
97
install -Dm644 -t "$pkgdir/usr/share/meo-ai-desktop/qml" "$srcdir/$_srcdir/meo/desktop-rs/qml/"*.qml
98
rm -f "$pkgdir/usr/share/applications/org.meo.MeoAI.desktop" \
99
"$pkgdir/usr/share/applications/io.github.qwersyk.Newelle.desktop"
100
install -Dm644 "$srcdir/org.meo.AI.desktop" "$pkgdir/usr/share/applications/org.meo.AI.desktop"
101
install -Dm644 "$srcdir/$_srcdir/COPYING" "$pkgdir/usr/share/licenses/$pkgname/COPYING"
102
for dependency in newspaper3k feedfinder2 tinysegmenter; do
103
install -Dm644 "$startdir/$dependency-LICENSE" \
104
"$pkgdir/usr/share/licenses/$pkgname/$dependency-LICENSE"
105
done
106
install -Dm644 "$startdir/runtime-sources.json" \
107
"$pkgdir/usr/share/licenses/$pkgname/runtime-sources.json"
108
# User services are shipped disabled; credentials and cloud deployment
109
# configuration are never part of this desktop package.
110
}
111
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-10-26 03:43:44 | Low | 1 |