isrc-cas / tarsier-oerv

Project magament for porting openEuler to RISC-V
Apache License 2.0
33 stars 51 forks source link

libreoffice 现状调研 #42

Closed xijing21 closed 2 years ago

xijing21 commented 3 years ago

调研下 libreoffice 在 RISC-V 上的运行现状,如果不支持,那依赖哪些包? 以及当前哪些团队在做?

mc964203886 commented 3 years ago

我来接手该任务

mc964203886 commented 3 years ago

目前在github上libreoffice的仓库中仅有配置验证文件涉及到了riscv相关代码,但自身并没有对RISC-V进行任何支持。也不存在issue讨论RISCV的相关信息。这显然不符合RISC-V的支持需求。官方网站与中文论坛也没有相关信息。

libreoffice的总体布局状态如下:

LibreOffice 由100多个相互依赖的模块组成, 每个模块位于LibreOffice源代码根目录下的一个文件夹中。请注意,除非特别注明,以下提到的所有路径都是相对于这个根目录的。每个模块一般都遵循特定的规则,至少包含以下文件或目录:

moduledir/README

一般包含关于该模块用途以及内容的描述。您可以在docs.libreoffice.org 找到所有的LibreOffice模块以及这些模块README第一行内容的清单。

moduledir/*.mk

各种可编译的 gbuild makefiles.

moduledir/source/

源代码(一般情况下是 C++)。经常会有源代码以子模块(submodules)的形式出现。

头文件 (headers)

您会在多个地方看到头文件,这取决于定义的接口需要的最小作用范围 (Scope)。

include/

模块间的头文件。

moduledir/inc/

模块内的头文件。

moduledir/source/submoduledir/inc/

仅某个子模块要求的头文件。 在偶然的情况下,头文件也有可能在它们的 .cxx 函数实现中一同出现。

UI(用户界面)

如果一个模块有关联的GUI,则主要存在两种情况。目前,将用户界面规范从老旧的.src/.hrc格式转换为基于xml的 Glade/Gtk3 .ui 格式的工作正在进行中。

moduledir/uiconfig/

新的Glade风格的 .ui 文件。

moduledir/source/ui/

其它的 .src 文件。

编译系统

有一个来自2013年米兰LibreOffice年会上的非正式幻灯片,探讨了LibreOffice的编译系统状况。以下部分只列出了简短的概要,该幻灯片对一些细节有更细致的描述。

solenv/

包含编译系统的很多重要部分。

solenv/gbuild

gbuild 实现。

solenv/bin ; solenv/bin/modules/

Perl 编译和打包工具。

scp2/

打包和安装的配置文件。

当使用 ./autogen.sh 以及 make 完成了LibreOffice的编译之后,一个可运行的完整安装可在以下位置找到:

instdir/program/

在那里您可以找到 soffice.bin 以及 soffice. 前者是LibreOffice的主要二进制程序。当首次运行时,它建立用户配置文件 (user profile) 并退出,之后就可以再次以正常方式运行了。要避免该过程,应当使用包装程序 soffice 作为测试目的来运行LibreOffice。当以debugger模式运行LibreOffice时,应当直接使用 soffice.bin .

主要部件

LibreOffice Writer 文本文档

由于LibreOffice在历史上属于Sun的Star分支,它的主要部件位置包含了指向该legacy的提示。比如 ,Writer模块包含在 sw/ 目录中 (StarWriter)。

sw/

Writer的主要模块。

starmath/

数学公式编辑器。

swext/

内置的Writer扩展。

LibreOffice Calc 电子表格

sc/

Calc的主要代码。

chart2/

Calc的图表实现。

LibreOffice Draw 绘图(以及 LibreOffice Impress 演示文稿)

sd/

Draw和Impress共用一个模块以及这里的相当大一部分代码。

sdext/

Draw和Impress的扩展。

仅 LibreOffice Impress 演示文稿

slideshow/

Impress的幻灯片演示引擎。

图形模块

svx/

包含由几个主要模块共享的图形 (graphics) 辅助代码,尤其是Draw和Impress。

drawinglayer/

为绘图对象提供了一个API。

文档

sfx2/

包含被sw, sc和sd使用的用于调用document shells的框架。该模块包含文档载入及保存处理,文档载入和保存会分别激发正确的导入(import)和导出(export)筛选器。

writerfilter/

Writer .rtf 导入筛选器,以及部分的 .docx 导入筛选器。

writerperfect/

一个Writer导入筛选器家族,包含 WordPerfect, Microsoft Publisher 以及 Microsft Visio 文档格式导入筛选器。

oox/

对微软OOXML格式解析的支持 (.docx, .xlsx, etc.)

根据libreoffice中文社区给出的如何编译 LibreOffice可知编译环境需要:

·ccache(可选,用于加速编译)

·patch

·avahi-devel

·fakeroot

·rpm-build

其余的依赖需要dnf提供的builddep命令来获取(更新中)

mc964203886 commented 3 years ago

在qemu-riscv64上搭建Fedora 测试qemu-riscv64的dnf指令过程中出现了


kex_exchange_identification:Connection closed by remote host

的错误,网络上无法找到与我相同的情况,通过修改本地配置已解决。Fedora出现了


unxz:Fedora-Developer-Rawhide-20200108.n.0-sda.raw.xz:文件格式无法识别 

的错误(重新下载源后解决),已解决。

但默认的账号与密码并不能登录系统,从Fedora 31版本开始,初始用户改为了“riscv”密码改为了“fedora_rocks!”(最后有个感叹号)。

根据测试结果dnf无法在riscv上正常获取libreoffice的信息及依赖项。所以dnf的riscv版本尚不支持libreoffice且libreoffice也未能支持riscv。

mc964203886 commented 3 years ago

根据分析dnf为libreoffice提供了以下前置依赖环境:

·git ·build-essential ·zip ·ccache ·junit4 ·libkrb5-dev ·nasm ·graphviz ·python3 ·python3-dev ·qtbase5-dev ·libkf5coreaddons-dev ·libkf5i18n-dev ·libkf5config-dev ·libkf5windowsystem-dev ·libkf5kio-dev ·autoconf ·libcups2-dev ·libper doxygen ·libxslt1-dev ·xsltproc ·libxml2-utils ·libxrandr-dev ·bison ·flex ·libgtk-3-dev ·libgstreamer-plugins-base1.0-dev ·libgstreamer1.0-dev ·ant ·ant-optional

mc964203886 commented 3 years ago

在make过程中需要的第三方依赖:

ucpp-1.3.2.tar.gz

GentiumBasic_1102.zip

hsqldb_1_8_0.zip

unowinreg.dll

converttexttonumber-1-5-0.oxt

rasqal-0.9.33.tar.gz

lp_solve_5.5.tar.gz

dejavu-fonts-ttf-2.37.zip

libformula-1.1.7.zip

swingExSrc.zip

crosextrafonts-20130214.tar.gz

sacjava-1.3.zip

epm-3.7.tar.gz

libfonts-1.1.6.zip

clucene-core-2.3.3.4.tar.gz

opens___.ttf

hyphen-2.8.8.tar.gz

rhino1_5R5.zip

officeotron-0.7.4-master.jar

opens___.ttf

librepository-1.1.6.zip

source-code-pro-2.030R-ro-1.050R-it.tar.gz

libloader-1.1.6.zip

Amiri-0.111.zip

CoinMP-1.7.6.tgz

EmojiOneColor-SVGinOT-1.3.tar.gz

Firebird-3.0.0.32483-0.tar.bz2

Firebird-3.0.7.33374-0.tar.bz2

Python-3.5.7.tar.xz

Python-3.7.6.tar.xz

Python-3.7.7.tar.xz

Python-3.8.10.tar.xz

Python-3.8.4.tar.xz

Python-3.8.8rc1.tar.xz

QR-Code-generator-1.4.0.tar.gz

ReemKufi-0.7.zip

Scheherazade-2.100.zip

mariadb_client-2.0.0-src.tar.gz

raptor2-2.0.15.tar.gz

mythes-1.2.4.tar.gz

libxml-1.1.7.zip

alef-1.001.tar.gz

numbertext_0.9.5.oxt

flow-engine-0.9.4.zip

glm-0.9.4.6-libreoffice.zip

bsh-2.0b6-src.zip

boost_1_65_1.tar.bz2

boost_1_66_0.tar.bz2

boost_1_69_0.tar.bz2

boost_1_71_0.tar.bz2

boost_1_71_0.tar.xz

boost_1_75_0.tar.xz

boost_1_76_0.tar.xz

box2d-2.3.1.tar.gz

breakpad.zip

postgresql-9.2.1.tar.bz2

crosextrafonts-carlito-20130920.tar.gz

cairo-1.16.0.tar.xz

commons-logging-1.2-src.tar.gz

cppunit-1.14.0.tar.gz

cppunit-1.15.1.tar.gz

culmus-0.131.tar.gz

culmus-0.133.tar.gz

curl-7.56.1.tar.gz

curl-7.61.1.tar.gz

curl-7.64.0.tar.gz

curl-7.65.0.tar.xz

curl-7.71.0.tar.xz

curl-7.78.0.tar.xz

flute-1.1.6.zip

liblayout-0.2.10.zip

dtoa-20180411.tgz

redland-1.0.17.tar.gz

LinLibertineG-20120116.zip

pixman-0.34.0.tar.gz

source-sans-pro-2.010R-ro-1.065R-it.tar.gz

libbase-1.1.6.zip

expat-2.2.5.tar.bz2

expat-2.2.8.tar.bz2

expat-2.4.1.tar.bz2

opens___.ttf

libserializer-1.1.6.zip

fetch.log

fontconfig-2.13.91.tar.gz

glm-0.9.9.7.zip

gpgme-1.13.1.tar.bz2

gpgme-1.9.0.tar.bz2

graphite2-minimal-1.3.10.tgz

graphite2-minimal-1.3.13.tgz

graphite2-minimal-1.3.14.tgz

gyp-e87d37d6bce611abed35e854d5ae1a401e9ce04c.tar.xz

harfbuzz-1.7.0.tar.bz2

harfbuzz-1.8.4.tar.bz2

harfbuzz-2.3.1.tar.bz2

harfbuzz-2.6.0.tar.xz

harfbuzz-2.8.2.tar.xz

hunspell-1.6.2.tar.gz

hunspell-1.7.0.tar.gz

icu4c-60_1-data.zip

icu4c-60_1-src.tgz

icu4c-63_1-data.zip

icu4c-63_1-src.tgz

icu4c-64_2-data.zip

icu4c-64_2-src.tgz

icu4c-65_1-data.zip

icu4c-65_1-src.tgz

icu4c-67_1-data.zip

icu4c-67_1-src.tgz

icu4c-68_1-data.zip

icu4c-68_1-src.tgz

icu4c-69_1-data.zip

icu4c-69_1-src.tgz

language-subtag-registry-2017-08-15.tar.bz2

language-subtag-registry-2018-04-23.tar.bz2

language-subtag-registry-2019-04-03.tar.bz2

language-subtag-registry-2019-09-16.tar.bz2

language-subtag-registry-2020-04-01.tar.bz2

language-subtag-registry-2020-09-29.tar.bz2

language-subtag-registry-2020-12-18.tar.bz2

language-subtag-registry-2021-03-05.tar.bz2

language-subtag-registry-2021-08-06.tar.bz2

lcms2-2.11.tar.gz

lcms2-2.8.tar.gz

lcms2-2.9.tar.gz

libabw-0.1.1.tar.bz2

libabw-0.1.2.tar.xz

libabw-0.1.3.tar.xz

libassuan-2.4.3.tar.bz2

libassuan-2.5.1.tar.bz2

libassuan-2.5.3.tar.bz2

libcdr-0.1.4.tar.xz

libcdr-0.1.5.tar.xz

libcdr-0.1.6.tar.xz

libcdr-0.1.7.tar.xz

libcmis-0.5.1.tar.gz

libcmis-0.5.2.tar.xz

libe-book-0.1.2.tar.bz2

libe-book-0.1.3.tar.xz

libepoxy-1.3.1.tar.bz2

libepoxy-1.5.2.tar.xz

libepoxy-1.5.3.tar.xz

libepubgen-0.0.1.tar.bz2

libepubgen-0.1.1.tar.xz

liberation-fonts-ttf-2.00.4.tar.gz

liberation-narrow-fonts-ttf-1.07.6.tar.gz

libetonyek-0.1.10.tar.xz

libetonyek-0.1.7.tar.xz

libetonyek-0.1.8.tar.xz

libetonyek-0.1.9.tar.xz

libexttextcat-3.4.5.tar.xz

libffi-3.3.tar.gz

libfreehand-0.1.2.tar.xz

libgpg-error-1.27.tar.bz2

libgpg-error-1.37.tar.bz2

libjpeg-turbo-1.5.2.tar.gz

libjpeg-turbo-1.5.3.tar.gz

liblangtag-0.6.2.tar.bz2

libmspub-0.1.2.tar.bz2

libmspub-0.1.4.tar.xz

libmwaw-0.3.13.tar.xz

libmwaw-0.3.14.tar.xz

libmwaw-0.3.15.tar.xz

libmwaw-0.3.16.tar.xz

libmwaw-0.3.17.tar.xz

libmwaw-0.3.18.tar.xz

libmwaw-0.3.19.tar.xz

libmwaw-0.3.20.tar.xz

libnumbertext-1.0.5.tar.xz

libnumbertext-1.0.6.tar.xz

libnumbertext-1.0.7.tar.xz

libodfgen-0.1.6.tar.bz2

libodfgen-0.1.8.tar.xz

liborcus-0.13.1.tar.gz

liborcus-0.14.1.tar.gz

liborcus-0.15.0.tar.gz

liborcus-0.15.1.tar.gz

liborcus-0.15.2.tar.gz

liborcus-0.15.3.tar.gz

liborcus-0.15.4.tar.bz2

liborcus-0.16.0.tar.bz2

liborcus-0.16.1.tar.bz2

libpagemaker-0.0.3.tar.bz2

libpagemaker-0.0.4.tar.xz

libpng-1.6.34.tar.xz

libpng-1.6.37.tar.xz

libqxp-0.0.0.tar.xz

libqxp-0.0.1.tar.xz

libqxp-0.0.2.tar.xz

libre-hebrew-1.0.tar.gz

librevenge-0.0.4.tar.bz2

libstaroffice-0.0.5.tar.xz

libstaroffice-0.0.6.tar.xz

libstaroffice-0.0.7.tar.xz

libvisio-0.1.6.tar.xz

libvisio-0.1.7.tar.xz

libwpd-0.10.2.tar.xz

libwpd-0.10.3.tar.xz

libwpg-0.3.2.tar.xz

libwpg-0.3.3.tar.xz

libwps-0.4.10.tar.xz

libwps-0.4.11.tar.xz

libwps-0.4.12.tar.xz

libwps-0.4.7.tar.xz

libxml2-2.9.10.tar.gz

libxml2-2.9.12.tar.gz

libxml2-2.9.9.tar.gz

libxslt-1.1.33.tar.gz

libxslt-1.1.34.tar.gz

libzmf-0.0.2.tar.xz

ltm-1.0.zip

lxml-4.1.1.tgz

mariadb-connector-c-3.1.8-src.tar.gz

mdds-1.3.1.tar.bz2

mdds-1.4.3.tar.bz2

mdds-1.5.0.tar.bz2

mdds-1.6.0.tar.bz2

mdds-1.7.0.tar.bz2

neon-0.30.2.tar.gz

neon-0.31.1.tar.gz

neon-0.31.2.tar.gz

noto-fonts-20171024.tar.gz

nss-3.33-with-nspr-4.17.tar.gz

nss-3.38-with-nspr-4.19.tar.gz

nss-3.45-with-nspr-4.21.tar.gz

nss-3.47.1-with-nspr-4.23.tar.gz

nss-3.53-with-nspr-4.25.tar.gz

nss-3.55-with-nspr-4.27.tar.gz

odfvalidator-1.2.0-incubating-SNAPSHOT-jar-with-dependencies-971c54fd38a968f5860014b44301872706f9e540.jar

openldap-2.4.45.tgz

openssl-1.0.2m.tar.gz

openssl-1.0.2p.tar.gz

openssl-1.0.2r.tar.gz

openssl-1.0.2t.tar.gz

openssl-1.1.1g.tar.gz

openssl-1.1.1i.tar.gz

openssl-1.1.1k.tar.gz

openssl-1.1.1l.tar.gz

pdfium-3235.tar.bz2

pdfium-3550.tar.bz2

pdfium-3730.tar.bz2

pdfium-3794.tar.bz2

pdfium-3849.tar.bz2

pdfium-3896.tar.bz2

pdfium-3963.tar.bz2

pdfium-4021.tar.bz2

pdfium-4083.tar.bz2

pdfium-4137.tar.bz2

pdfium-4203.tar.bz2

pdfium-4260.tar.bz2

pdfium-4306.tar.bz2

pdfium-4380.tar.bz2

pdfium-4450.tar.bz2

pdfium-4500.tar.bz2

pdfium-4568.tar.bz2

poppler-0.59.0.tar.xz

poppler-0.66.0.tar.xz

poppler-0.74.0.tar.xz

poppler-0.82.0.tar.xz

poppler-21.01.0.tar.xz

poppler-data-0.4.10.tar.gz

postgresql-13.1.tar.bz2

postgresql-9.2.24.tar.bz2

skia-m79-0df7697235b4a02cd6dd6fa2a783345add40cbad.tar.xz

skia-m80-0af13b3caf0384981f50e073ebc7bd0f3f751711.tar.xz

skia-m81-3e98c0e1d11516347ecc594959af2c1da4d04fc9.tar.xz

skia-m82-7bb74c4299b8a85de1e5718fc45da569d6dab3fc.tar.xz

skia-m83-8ce842d38d0b32149e874d6855c91e8c68ba65a7.tar.xz

skia-m84-c1baf6e1c2a5454148adb516f0f833483b5a0353.tar.xz

skia-m85-e684c6daef6bfb774a325a069eda1f76ca6ac26c.tar.xz

skia-m86-e1e24080421116cf5d63b55cd5042176bebc0a43.tar.xz

skia-m88-59bafeeaa7de9eb753e3778c414e01dcf013dcd8.tar.xz

skia-m89-15595ea39c4442ded546ba36ef63a521240bc0f4.tar.xz

skia-m90-45c57e116ee0ce214bdf78405a4762722e4507d9.tar.xz

skia-m91-b99622c05aa071606921ab35a4b59fba5305669d.tar.xz

skia-m94-975fcdd755dfc5d57cddbb25857e0c4ac29abe98.tar.xz

source-serif-pro-3.000R.tar.gz

ttf-kacst_2.01+mry.tar.gz

xmlsec1-1.2.25.tar.gz

xmlsec1-1.2.27.tar.gz

xmlsec1-1.2.28.tar.gz

xmlsec1-1.2.29.tar.gz

xmlsec1-1.2.30.tar.gz

xmlsec1-1.2.31.tar.gz

xmlsec1-1.2.32.tar.gz

zxing-cpp-1.1.1.tar.gz

box2d-2.3.1.tar.gz

icu4c-67_1-data.zip

icu4c-67_1-src.tgz

libstaroffice-0.0.7.tar.xz

openssl-1.1.1g.tar.gz

pdfium-4137.tar.bz2

以上package并非全部需要,不同版本的libreoffice会依赖不同的包。

mc964203886 commented 3 years ago

@xijing21 以上为调研结果,目前没有组织或成员在公开场合或github上表示会让libreoffice对riscv进行支持。

lazyparser commented 2 years ago

后续交给TARSIER的6号员工完成。