gxde-core-git
LOW
maintainer CharOfString
0 votes
scanned 2026-10-09 06:10:33.683041
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: CharOfString <root@charofstring.cc>
2
3
pkgname=gxde-core-git
4
pkgver=6.0.24.r0.g0000000
5
pkgrel=1
6
pkgdesc='GXDE OS desktop core components set. Note that X11 is NO longer provided.'
7
arch=(x86_64 aarch64)
8
url='https://github.com/GXDE-OS'
9
license=(GPL-3.0-or-later LGPL-3.0-or-later)
10
_mods=(gxde-account-faces gxde-icon-theme deepin-gtk-theme gxde-artwork gxde-wallpapers
11
gxde-default-settings transhell garma gxde-app-installer gxde-app-upgrader
12
gxde-app-uninstaller gxde-shell-tools gxde-sound-theme gxde-polkit-agent
13
dpa-ext-gnomekeyring deepin-installer-reborn deepin-daemon gxde-daemon startgxde
14
deepin-menu gxde-sni-server gxde-dock gxde-globalmenu-service gxde-top-panel-plugins
15
gxde-top-panel gxde-control-center gxde-launcher gxde-session-ui zipu
16
gxde-shell-compressor gxde-compressor rofd gxde-file-manager
17
gxde-file-manager-integration gxde-requ gxde-time-screensaver deepin-screensaver
18
util-dfm deepin-pdfium deepin-service-manager dde-grand-search gxde-terminal)
19
declare -A _branch=([gxde-sni-server]=main [gxde-top-panel-plugins]=d20
20
[gxde-file-manager]=char/qt6_migration [gxde-terminal]=dtk6 [rofd]=main)
21
depends=(gxde-dtk5-git gxde-dtk2-git gxde-dtk6-git gxde-dtk2-qt6-git gxde-infra-git
22
qt5-base qt5-svg qt5-x11extras qt6-base qt6-5compat qt6-declarative qt6-multimedia
23
qt6-svg qt6-webengine gsettings-qt5 gsettings-qt6 polkit-qt5 polkit-qt6 liblightdm-qt5
24
kcodecs kconfig5 kcoreaddons kcoreaddons5 kcrash kdbusaddons kwindowsystem kwindowsystem5
25
networkmanager-qt layer-shell-qt libdbusmenu-lxqt
26
glib2 gtk3 cairo librsvg gdk-pixbuf2 gdk-pixbuf-xlib fontconfig freetype2 poppler
27
lcms2 openjpeg2 libjpeg-turbo jbig2dec zlib icu libchardet uchardet cjson
28
ffmpeg ffmpegthumbnailer taglib libmediainfo lucene++ alsa-lib libpulse
29
libsecret openssl pam libxcrypt systemd-libs util-linux-libs libgudev libinput libnl
30
udisks2 libisoburn wayland xdotool
31
libx11 libxcb libxcursor libxext libxfixes libxi libxrandr libxss libxtst
32
xcb-util-image xcb-util-wm
33
gcc-libs glibc python python-pydbus python-gobject bash)
34
optdepends=('lightdm: display manager for lightdm-deepin-greeter'
35
'accountsservice: user account information for the session and control center')
36
provides=(deepin-pdfium deepin-util-dfm deepin-service-manager)
37
conflicts=(deepin-gtk-theme deepin-screensaver deepin-daemon deepin-grand-search deepin-tray-loader
38
deepin-util-dfm deepin-sound-theme deepin-service-manager deepin-pdfium
39
deepin-session-ui deepin-session-shell deepin-file-manager deepin-polkit-agent
40
deepin-polkit-agent-ext-gnomekeyring deepin-wallpapers deepin-session deepin-menu)
41
makedepends=(git go rust cmake ninja python gettext jq
42
qt5-tools qt6-tools xorg-xcursorgen gtk-update-icon-cache extra-cmake-modules
43
lxqt-build-tools gtest
44
gxde-dtk2widget-dev-git
45
polkit-qt5 polkit-qt6 liblightdm-qt5 gsettings-qt5 gsettings-qt6
46
qt5-declarative qt5-multimedia qt6-5compat qt6-scxml qt6-multimedia qt6-webengine
47
kcoreaddons kcrash kdbusaddons kstatusnotifieritem kwindowsystem networkmanager-qt
48
kcodecs kglobalaccel kwindowsystem5 kcoreaddons5 kconfig5 layer-shell-qt
49
libdbusmenu-lxqt xdotool libxss libxrandr libxtst libxcursor libxkbcommon
50
xcb-util-wm mtdev fontconfig cjson python-pydbus parted
51
libsecret file poppler taglib libwebp ffmpegthumbnailer libisoburn udisks2
52
glibmm libmediainfo lucene++ boost lcms2 openjpeg2 libjpeg-turbo libchardet
53
uchardet libutf8proc icu zlib)
54
source=()
55
for _m in "${_mods[@]}"; do
56
source+=("$_m::git+$url/$_m.git${_branch[$_m]:+#branch=${_branch[$_m]}}")
57
done
58
sha256sums=("${_mods[@]/*/SKIP}")
59
60
pkgver() {
61
local _count=0 _m
62
for _m in "${_mods[@]}"; do
63
_count=$((_count + $(git -C "$_m" rev-list --count HEAD)))
64
done
65
printf '%s.r%s.g%s' "$(git -C gxde-control-center describe --tags --abbrev=0)" "$_count" \
66
"$(git -C gxde-control-center rev-parse --short=7 HEAD)"
67
}
68
69
prepare() {
70
local _m _tag
71
for _m in "${_mods[@]}"; do
72
_tag=$(git -C "$_m" describe --tags --abbrev=0)
73
msg2 "$_m -> $_tag"
74
git -C "$_m" checkout -q --detach "refs/tags/$_tag"
75
done
76
}
77
78
_stage_pcs() {
79
local _f
80
mkdir -p "$srcdir/pc"
81
for _f in "$srcdir"/stage/usr/lib/pkgconfig/*.pc; do
82
[[ -e $_f ]] || continue
83
sed -E "s#(^[a-z_]+=|-I|-L)/usr(/|\$)#\1$srcdir/stage/usr\2#g" "$_f" > "$srcdir/pc/${_f##*/}"
84
done
85
}
86
87
_cmake() {
88
local _m=$1; shift
89
cmake -S "$_m" -B "build-$_m" -G Ninja \
90
-DCMAKE_INSTALL_PREFIX=/usr \
91
-DCMAKE_INSTALL_LIBDIR=lib \
92
-DCMAKE_PREFIX_PATH="$srcdir/stage/usr" \
93
-DCMAKE_BUILD_TYPE=None \
94
-DBUILD_TESTING=OFF \
95
"$@"
96
cmake --build "build-$_m"
97
DESTDIR="$srcdir/stage" cmake --install "build-$_m"
98
_stage_pcs
99
}
100
101
_qmake() {
102
local _qm=$1 _m=$2; shift 2
103
mkdir -p "build-$_m"
104
( cd "build-$_m" && $_qm "../$_m" PREFIX=/usr LIB_INSTALL_DIR=/usr/lib CONFIG+=no_qt_rpath \
105
INCLUDEPATH+="$srcdir/stage/usr/include" LIBS+="-L$srcdir/stage/usr/lib" \
106
QMAKE_CFLAGS_RELEASE="$CFLAGS" QMAKE_CXXFLAGS_RELEASE="$CXXFLAGS" \
107
QMAKE_LFLAGS_RELEASE="$LDFLAGS" "$@" && make )
108
make -C "build-$_m" INSTALL_ROOT="$srcdir/stage" install
109
_stage_pcs
110
}
111
112
# deepin-daemon 的 make install 依赖 build 目标,package() 中同样需要 GOPATH 模式的环境
113
_goenv() {
114
export GO111MODULE=off GOFLAGS="-buildmode=pie -trimpath" GOCACHE="$srcdir/gocache"
115
export CGO_CPPFLAGS="$CPPFLAGS" CGO_CFLAGS="$CFLAGS -std=gnu17" CGO_CXXFLAGS="$CXXFLAGS" CGO_LDFLAGS="$LDFLAGS"
116
}
117
118
_ver() {
119
sed -n '1s/.*(\([0-9]*:\)\?\([0-9.]*\).*/\2/p' "$1/debian/changelog"
120
}
121
122
build() {
123
local _stage="$srcdir/stage"
124
export LD_LIBRARY_PATH="$_stage/usr/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
125
export LIBRARY_PATH="$_stage/usr/lib${LIBRARY_PATH:+:$LIBRARY_PATH}"
126
export PKG_CONFIG_PATH="$srcdir/pc${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
127
_goenv
128
export CARGO_HOME="$srcdir/cargo-home" CARGO_NET_OFFLINE=true
129
130
make -C gxde-icon-theme
131
make -C gxde-wallpapers
132
_cmake garma
133
_qmake qmake-qt5 gxde-polkit-agent
134
_qmake qmake-qt5 dpa-ext-gnomekeyring
135
136
local _po
137
for _po in deepin-installer-reborn/src/third_party/timezones/*/deepin-installer-timezones.po; do
138
install -d "build-timezones/$(basename "$(dirname "$_po")")/LC_MESSAGES"
139
msgfmt -o "build-timezones/$(basename "$(dirname "$_po")")/LC_MESSAGES/deepin-installer-timezones.mo" "$_po"
140
done
141
142
make -C deepin-daemon
143
local _d
144
for _d in dock daemon-manager gtk-theme-inject; do
145
cmake -S "gxde-daemon/plugins/$_d" -B "build-gxde-daemon-$_d" -DCMAKE_BUILD_TYPE=None \
146
-DCMAKE_INSTALL_PREFIX=/usr
147
cmake --build "build-gxde-daemon-$_d"
148
done
149
make -C startgxde
150
151
_qmake qmake6 deepin-menu
152
_cmake gxde-sni-server
153
_cmake gxde-dock
154
_cmake gxde-globalmenu-service
155
_cmake gxde-top-panel-plugins
156
# gxde-top-panel 的 CMakeLists 用 `apt --version` 判断是否走 deb.cmake 的安装规则,
157
# 另一分支的规则仍是改名前的文件名(dde-top-panel),这里提供一个 apt 桩让它走 deb.cmake
158
install -Dm755 /dev/stdin "$srcdir/apt-stub/apt" <<< $'#!/bin/sh\necho "apt 0 (build stub)"'
159
PATH="$srcdir/apt-stub:$PATH" _cmake gxde-top-panel
160
_cmake gxde-control-center
161
_cmake gxde-launcher
162
# 与 Debian 一致用 CMake 构建(主工程 Qt5,dde-shutdown 作为 Qt6 ExternalProject);
163
# Arch 的 gsettings-qt5 头文件在 /usr/include/qt5/QGSettings,只传给 Qt5 主工程
164
_cmake gxde-session-ui -DCMAKE_CXX_FLAGS="$CXXFLAGS -I/usr/include/qt5"
165
166
# qttypes 依赖的 cpp crate 有两处与 makepkg 默认选项冲突:
167
# - debug 选项给 RUSTFLAGS 加的 --remap-path-prefix 使宏按改写后的路径匹配,找不到 build.rs 生成的闭包;
168
# - lto 选项给 C/C++ 加的 -flto 使目标文件只含 GIMPLE,宏读不到其中的结构体元数据。
169
( cd rofd && RUSTFLAGS="$(sed -E 's/--remap-path-prefix=[^ ]*//g' <<< "$RUSTFLAGS")" \
170
CFLAGS="$(sed -E 's/-flto[^ ]*|-ffat-lto-objects//g' <<< "$CFLAGS")" \
171
CXXFLAGS="$(sed -E 's/-flto[^ ]*|-ffat-lto-objects//g' <<< "$CXXFLAGS")" \
172
cargo build --release --offline --locked -p rofd-ffi -p rofd --features rofd/qt-reader )
173
local _rv
174
_rv=$(sed -n 's/^version = "\(.*\)"/\1/p' rofd/crates/rofd-ffi/Cargo.toml | head -1)
175
install -Dm644 rofd/target/release/librofd_ffi.so "$_stage/usr/lib/librofd_ffi.so.$_rv"
176
ln -sf "librofd_ffi.so.$_rv" "$_stage/usr/lib/librofd_ffi.so.${_rv%%.*}"
177
ln -sf "librofd_ffi.so.$_rv" "$_stage/usr/lib/librofd_ffi.so"
178
install -Dm644 rofd/crates/rofd-ffi/include/rofd.h "$_stage/usr/include/rofd.h"
179
180
# Arch 的 KF6 头文件(KCodecs)要求 C++20;-r 让命令行参数传到各子项目
181
_qmake "qmake6 -r" gxde-file-manager VERSION="$(_ver gxde-file-manager)" DISABLE_JEMALLOC=1 \
182
DEFINES+="VERSION=$(_ver gxde-file-manager)" CONFIG+=c++20 \
183
INCLUDEPATH+="$srcdir/stage/usr/include/gxde-dock"
184
_qmake qmake6 gxde-file-manager-integration DAPP_VERSION="$(_ver gxde-file-manager-integration)"
185
_cmake gxde-requ
186
_qmake qmake-qt5 gxde-time-screensaver
187
_cmake deepin-screensaver -DQT_VERSION_MAJOR=6 -DVERSION="$(_ver deepin-screensaver)" \
188
-DAPP_VERSION="$(_ver deepin-screensaver)"
189
_cmake util-dfm -DVERSION="$(_ver util-dfm)"
190
_cmake deepin-pdfium -DVERSION="$(_ver deepin-pdfium)"
191
_cmake deepin-service-manager -DVERSION="$(_ver deepin-service-manager)"
192
# deepin-qdbus-serviceConfig.cmake 写死了 /usr/include/deepin-qdbus-service
193
_cmake dde-grand-search -DVERSION="$(_ver dde-grand-search)" \
194
-DCMAKE_CXX_FLAGS="$CXXFLAGS -I$_stage/usr/include/deepin-qdbus-service"
195
_cmake gxde-terminal -DINSTALL_USER_MANUAL=OFF -DVERSION="$(_ver gxde-terminal)" \
196
-DAPP_VERSION="$(_ver gxde-terminal)"
197
}
198
199
package() {
200
local _m _d
201
_goenv
202
make -C gxde-account-faces install DESTDIR="$pkgdir"
203
chmod 775 "$pkgdir/var/lib/AccountsService" "$pkgdir/var/lib/AccountsService/icons"
204
install -d "$pkgdir/usr/share/icons"
205
cp -a gxde-icon-theme/{gxde,deepin,gxde-dark,gxde-Sea} "$pkgdir/usr/share/icons/"
206
make -C deepin-gtk-theme install DESTDIR="$pkgdir"
207
cp -a gxde-artwork/etc "$pkgdir/"
208
install -d "$pkgdir/usr/share/wallpapers/deepin" "$pkgdir/var/cache"
209
cp -a gxde-wallpapers/deepin "$pkgdir/usr/share/wallpapers/"
210
cp -a gxde-wallpapers/deepin-community/. gxde-wallpapers/deepin-solidwallpapers/. \
211
"$pkgdir/usr/share/wallpapers/deepin/"
212
cp -a gxde-wallpapers/image-blur "$pkgdir/var/cache/"
213
make -C gxde-default-settings install DESTDIR="$pkgdir"
214
# gxde-default-settings-tuning 子包的 debian/install
215
install -Dm644 gxde-default-settings/tuning/cups-filters/*.pdf -t "$pkgdir/usr/share/deepin-default-settings/cups-filters/"
216
install -Dm644 gxde-default-settings/tuning/google-chrome/*.tar -t "$pkgdir/usr/share/deepin-default-settings/google-chrome/"
217
install -Dm644 gxde-default-settings/tuning/fcitx/*.png -t "$pkgdir/usr/share/deepin-default-settings/fcitx/"
218
for _m in transhell gxde-app-installer gxde-app-upgrader zipu gxde-shell-compressor \
219
gxde-compressor; do
220
cp -a "$_m/src/." "$pkgdir/"
221
done
222
install -d "$pkgdir/usr"
223
cp -a gxde-app-uninstaller/src/usr/. "$pkgdir/usr/"
224
make -C gxde-sound-theme install DESTDIR="$pkgdir"
225
226
install -d "$pkgdir/usr/share/locale"
227
cp -a build-timezones/. "$pkgdir/usr/share/locale/"
228
229
make -C deepin-daemon install DESTDIR="$pkgdir" PAM_MODULE_DIR=usr/lib/security
230
install -Dm755 build-gxde-daemon-dock/gxde-dock-daemon \
231
"$pkgdir/usr/libexec/gxde-daemon/dock/gxde-dock-daemon"
232
install -Dm755 build-gxde-daemon-gtk-theme-inject/gxde-gtk-theme-inject \
233
"$pkgdir/usr/libexec/gxde-daemon/gtk-theme-inject/gxde-gtk-theme-inject"
234
install -Dm755 build-gxde-daemon-daemon-manager/gxde-daemon-manager \
235
"$pkgdir/usr/libexec/gxde-daemon/daemon-manager/gxde-daemon-manager"
236
install -Dm644 gxde-daemon/plugins/dock/translations/*.json \
237
-t "$pkgdir/usr/share/gxde-daemon/dock/translations/"
238
# 以下对应 gxde-daemon 的 debian/install(dh_install 在 make install 之外额外安装)
239
( cd gxde-daemon
240
install -d "$pkgdir"/usr/{bin,libexec,share/{polkit-1,applications,dbus-1/{services,system-services,system.d}}}
241
install -d "$pkgdir"/usr/share/gxde-k9/{system,edging} "$pkgdir"/usr/share/gxde-daemon/{daemon-k9-conf,plugins}
242
install -d "$pkgdir/usr/lib/systemd/system"
243
cp -a bin/. "$pkgdir/usr/bin/"
244
cp -a misc/polkit-1/. "$pkgdir/usr/share/polkit-1/"
245
cp -a misc/applications/. "$pkgdir/usr/share/applications/"
246
cp -a libexec/gxde-daemon gxde-daemon "$pkgdir/usr/libexec/"
247
cp -a dbus/services/. "$pkgdir/usr/share/dbus-1/services/"
248
cp -a dbus/system-services/. "$pkgdir/usr/share/dbus-1/system-services/"
249
cp -a dbus/system.d/. "$pkgdir/usr/share/dbus-1/system.d/"
250
cp -a k9/system/. "$pkgdir/usr/share/gxde-k9/system/"
251
cp -a k9/edging/. "$pkgdir/usr/share/gxde-k9/edging/"
252
cp -a k9/disable/. "$pkgdir/usr/share/gxde-daemon/daemon-k9-conf/"
253
cp -a systemd/system/. "$pkgdir/usr/lib/systemd/system/"
254
install -m644 plugins/dock/data/top.gxde.daemon.dock.service "$pkgdir/usr/share/dbus-1/services/"
255
install -m644 manifests/*.json "$pkgdir/usr/share/gxde-daemon/plugins/" )
256
make -C startgxde install DESTDIR="$pkgdir"
257
258
install -Dm755 rofd/target/release/rofd "$pkgdir/usr/bin/rofd"
259
install -Dm644 rofd/debian/rofd.desktop "$pkgdir/usr/share/applications/rofd.desktop"
260
install -Dm644 rofd/resources/logo.png "$pkgdir/usr/share/icons/hicolor/256x256/apps/rofd.png"
261
install -d "$pkgdir/usr/lib"
262
cp -a "$srcdir"/stage/usr/lib/librofd_ffi.so* "$pkgdir/usr/lib/"
263
install -Dm644 rofd/crates/rofd-ffi/include/rofd.h "$pkgdir/usr/include/rofd.h"
264
265
for _m in garma gxde-sni-server gxde-dock gxde-globalmenu-service gxde-top-panel-plugins \
266
gxde-top-panel gxde-control-center gxde-launcher gxde-session-ui gxde-requ deepin-screensaver \
267
util-dfm deepin-pdfium deepin-service-manager dde-grand-search gxde-terminal; do
268
DESTDIR="$pkgdir" cmake --install "build-$_m"
269
done
270
for _m in gxde-polkit-agent dpa-ext-gnomekeyring deepin-menu \
271
gxde-file-manager gxde-file-manager-integration gxde-time-screensaver; do
272
make -C "build-$_m" INSTALL_ROOT="$pkgdir" install
273
done
274
275
cd "$pkgdir"
276
# Debian 布局调整为 Arch:/lib、/usr/sbin 为软链接,插件按编译进程序的 PLUGINDIR 安装
277
cp -a lib/. usr/lib/ && rm -r lib
278
install -d usr/bin && mv usr/sbin/* usr/bin/ && rmdir usr/sbin
279
for _d in usr/lib/*-linux-gnu; do
280
[[ -d $_d ]] || continue
281
cp -a "$_d/." usr/lib/ && rm -r "$_d"
282
done
283
284
# 不安装改变系统行为的配置;50-systemd-user.sh 属于 Arch 的 systemd 包
285
rm -r etc/X11/xinit/xinitrc.d/50-systemd-user.sh etc/X11/Xsession.d etc/X11/xorg.conf.d \
286
etc/sudoers.d etc/modprobe.d etc/systemd etc/udisks2 etc/acpi etc/default/grub.d \
287
etc/grub.d etc/gimp
288
find etc -depth -type d -empty -delete
289
290
# 部分模块以 install(FILES) 安装可执行文件,Debian 依赖 dh_fixperms 补执行权限
291
find usr/bin -type f -exec chmod 755 {} +
292
local _f
293
while IFS= read -r -d '' _f; do
294
[[ $(head -c2 "$_f") == '#!' ]] && chmod 755 "$_f"
295
done < <(find usr/libexec -type f ! -perm -u+x -print0)
296
}
297
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-10-09 06:10:33 | Low | 1 |