我想要qtwebengine的MIPS64实现。曾经读过千里孤坟的《KDE综览》,就深深喜欢上了KDE,当时的版本还是KDE3。后来KDE4发布,千里孤坟又写了《KDE 4.0.0构建依赖详解》。最新的(2018-08-10)KDE版本是KDE Plasma 5,分为KDE-Frameworks, KDE-Plasma和KDE-Apps,当然依赖最新的Qt5。Qt5有一个模块叫qtwebengine,是将chromium包装成一个webengine并提供面向对象的API。不幸的是,在qtwebengine-5.9.5中包含的chromium的sandbox_seccomp-bpf代码没有MIPS64实现。到了qtwebengine-5.11.1,chromium有了完全的MIPS64代码,但是qtwebengine本体还是缺乏MIPS64的实现,在mkspecs/features/platform.prf中是这样写的:
defineTest(isArchSupported) {
contains(QT_ARCH, "i386")|contains(QT_ARCH, "x86_64"): return(true)
contains(QT_ARCH, "arm")|contains(QT_ARCH, "arm64"): return(true)
contains(QT_ARCH, "mips"): return(true)
# contains(QT_ARCH, "mips64"): return(true)
skipBuild("QtWebEngine can only be built for x86, x86-64, ARM, Aarch64, and MIPSel architectures.")
return(false)
}
没有了qtwebengine,KDE也就搭建不起来了。百无聊赖,发现轻量的XFCE,先弄一个,慢慢等吧。
emerge -uDN --with-bdeps=y @world
# dev-util/meson
# vbox-gentoo 0.46.1
# 3A3000 0.47.1
# sys-devel/make
# 4.1-r1 4.2.1 4.2.1-r2 4.2.1-r3
# gettext mesa
# mesa wayland qtwayland
# vi /etc/portage/make.conf
# #MAKEOPT="-j4"
=======================================================
vi /etc/portage/package.use/xfce4.use
vi /etc/portage/package.keywords/xfce4.keywords
:g/^#\ /d
:%s/^>=//g
:%s/-[0-9.]*\ /\ /g
:%s/-[0-9.]*-r[0-9]\ /\ /g
# vi /usr/portage/profile/arch/mips/use.mask
vi /etc/portage/profile/use.mask
-video_cards_radeon
-video_cards_radeonsi
-video_cards_amdgpu
-pulseaudio
-gnome
-llvm
# wiki/Libinput
vi /etc/portage/make.conf
INPUT_DEVICES="libinput"
VIDEO_CARDS="radeon radeonsi amdgpu"
vi /etc/portage/package.use/default.use
sys-devel/llvm llvm_targets_AMDGPU llvm_targets_Mips
emerge -1a mesa
# 多编译几遍,成功了就行了,搞呗。
emerge -a xfce4-meta
# for HiDPI
设置 -> 外观 -> 设置 -> 窗口缩放 2x
设置 -> 窗口管理器 -> 样式 -> 标题字体 32
======== slim ============================================
vi /etc/portage/package.use/xfce4.use
x11-libs/gdk-pixbuf X
media-libs/mesa llvm
x11-misc/slim consolekit
emerge -a x11-misc/slim
vi /etc/conf.d/xdm
DISPLAYMANAGER="slim"
rc-update add consolekit default
rc-update add dbus default
rc-update add xdm default
for x in cdrom cdrw usb ; do gpasswd -a lophyxp $x ; done
echo XSESSION=\"Xfce4\" > /etc/env.d/90xsession
env-update && source /etc/profile
============================================================
# 提示:未能与设置服务器联系
# 换了lightdm、xdm 还是同样提示
# 所以不是slim的问题
# for dbus USE="X"
vi /etc/portage/make.conf
USE += "X"
emerge -uDN world
============================================================
============================================================
rc-update del net.enp6s0
vi /etc/NetworkManager/NetworkManager.conf
[main]
plugins=keyfile
hostname-mode=none
rc-update add NetworkManager default
vi /etc/conf.d/hostname
hostname="Loongson-3A3000"
vi /etc/fonts/local.conf
emerge --ask gvim fcitx-cloudpinyin
============================================================
emerge -a xfce4-terminal
# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
CFLAGS="-O2 -march=mips64r2 -mplt -pipe"
CXXFLAGS="${CFLAGS}"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="mips64el-unknown-linux-gnu"
USE="alsa pulseaudio networkmanager bash-completion X wayland"
MAKEOPT="-j4"
LINGUAS="zh zh_CN"
L10N="zh-CN"
INPUT_DEVICES="libinput"
VIDEO_CARDS="radeon radeonsi amdgpu"
GENTOO_MIRRORS="https://mirrors.163.com/gentoo/"
x11-drivers/xf86-video-ati *
media-fonts/wqy-microhei *
dev-util/xdelta *
=sys-devel/llvm-6.0.1 **
=sys-devel/llvm-common-6.0.1 **
=sys-devel/clang-common-6.0.1 **
=sys-devel/clang-6.0.1 **
=sys-devel/clang-runtime-6.0.1 **
=sys-libs/compiler-rt-sanitizers-6.0.1 **
=sys-libs/compiler-rt-6.0.1 **
# required by sys-kernel/genkernel-3.5.3.3::gentoo
# required by genkernel (argument)
>=sys-apps/util-linux-2.32-r3 static-libs
#x11-libs/libdrm video_cards_amdgpu
sys-devel/llvm llvm_targets_AMDGPU llvm_targets_Mips
dev-lang/python:2.7 sqlite
media-libs/libpng apng
dev-lang/rust extended llvm_targets_Mips
media-libs/harfbuzz icu
media-libs/imlib2 gif
dev-libs/efl svg sound drm egl gles
media-libs/mesa gles2
dev-libs/weston wayland-compositor
app-text/xmlto text
dev-libs/glib dbus
dev-libs/libpcre2 pcre16
dev-libs/libxml2 icu
dev-qt/qtcore icu
dev-qt/qtgui dbus egl jpeg
dev-qt/qtwebchannel qml
dev-qt/qtwebengine widgets
dev-ruby/did_you_mean ruby_targets_ruby25
dev-ruby/json ruby_targets_ruby25
dev-ruby/kpeg ruby_targets_ruby25
dev-ruby/minitest ruby_targets_ruby25
dev-ruby/net-telnet ruby_targets_ruby25
dev-ruby/power_assert ruby_targets_ruby25
dev-ruby/racc ruby_targets_ruby25
dev-ruby/rake ruby_targets_ruby25
dev-ruby/rdoc ruby_targets_ruby25
dev-ruby/rubygems ruby_targets_ruby25
dev-ruby/test-unit ruby_targets_ruby25
dev-ruby/xmlrpc ruby_targets_ruby25
kde-frameworks/kdelibs4support X
kde-frameworks/kwindowsystem X
media-libs/libvpx svc
media-libs/mesa wayland
media-sound/pulseaudio gnome
media-video/vlc dbus vorbis ogg
net-misc/networkmanager consolekit
net-wireless/wpa_supplicant dbus
sys-auth/consolekit policykit
sys-libs/zlib minizip
virtual/rubygems ruby_targets_ruby25
x11-libs/libxcb xkb
x11-libs/libxkbcommon X
x11-libs/cairo X
x11-libs/gdk-pixbuf X
media-libs/mesa llvm
x11-misc/slim consolekit
x11-apps/xdm consolekit
-video_cards_radeon
-video_cards_radeonsi
-video_cards_amdgpu
-llvm
-pulseaudio
-gnome
-extended
cargo
pre_src_prepare() {
[[ ${EAPI:-0} == [012345] ]] || return
if ! type estack_push > /dev/null 2>&1; then
local estack_names="eshopts_push eshopts_pop evar_push evar_push_set evar_pop estack_push estack_pop"
source <(awk "/^# @(FUNCTION|VARIABLE): / { p = 0 } /^# @(FUNCTION|VARIABLE): (${estack_names// /|})\$/ { p = 1 } p { print }" ${PORTDIR}/eclass/estack.eclass)
fi
if ! type epatch_user > /dev/null 2>&1; then
local epatch_names="EPATCH_SOURCE EPATCH_USER_SOURCE epatch_user_death_notice epatch_user epatch"
source <(awk "/^# @(FUNCTION|VARIABLE): / { p = 0 } /^# @(FUNCTION|VARIABLE): (${epatch_names// /|})\$/ { p = 1 } p { print }" ${PORTDIR}/eclass/epatch.eclass)
fi
epatch_user
for name in $epatch_names; do
unset $name
done
for name in $estack_names; do
unset $name
done
}
--- a/arch/mips/config.sh 2018-08-09 12:04:20.835098252 +0800
+++ b/arch/mips/config.sh 2018-08-09 12:05:05.835311954 +0800
@@ -16,4 +16,5 @@
# genkernel on mips is only used for LiveCDs && netboots. Catalyst
# will know where to get the kernels at.
-CMD_INSTALL=0
+CMD_INSTALL=1
+DEFAULT_UTILS_LD=gcc
app-admin/sysklogd
app-editors/gvim
app-editors/vim
app-i18n/fcitx-cloudpinyin
app-misc/screen
app-misc/screenfetch
app-portage/eix
app-portage/gentoolkit
app-portage/layman
app-shells/bash-completion
dev-libs/weston
media-fonts/terminus-font
media-fonts/wqy-microhei
net-misc/dhcpcd
net-misc/netifrc
sys-apps/mlocate
sys-fs/lvm2
sys-kernel/dracut
sys-kernel/genkernel
sys-kernel/gentoo-sources
sys-process/cronie
x11-base/xorg-server
x11-misc/slim
x11-terms/xfce4-terminal
xfce-base/xfce4-meta