Slackware - ARMThis forum is for the discussion of Slackware ARM.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
@drmozes - if you are so kind and obviously have some spare time can you please jump in and start a compilation on your build pool wonder machine by adapting the Slack 14.2 x86 LibreOffice?
The Orange Pi H3 Plus v1 only has 1GB RAM, and I have a 4GB swap partition on an SSD. There are a few SlackBuilds that reduce down the number of parallel builds due to RAM problems.
I need to get a machine with more RAM at some point, but so far I've been able to get by on 1GB.
KDE also runs reasonably well on my Banana Pi and Orange Pi. I wouldn't use it myself for a desktop on ARM, but when I do test it from time to time, it's usable.
I don't have any time to look at something like libreoffice - particularly with the dependencies it requires.
Just a short update, 15 hours into the build with only one makejob I've reached the "zone" where it crashed yesterday after just 7 hours with two makejobs.
Unfortunately it looks like it will crash again in the same "Piņa colada" section compiling a huge 29MB source file for the last 30 minutes: COLLADASaxFWLColladaParserAutoGen15PrivateValidation.cpp
I've noticed only after I started the compilation that I gave the GPU 256MB RAM and was left with only with 735 MB for the system, my bad.
@drmozes
Sorry, I was under the impression that you somehow split the make jobs and use the x86 systems for the individual compilation. That's why I asked you for help on this.
Last edited by abga; 11-08-2017 at 03:51 PM.
Reason: typo
@drmozes
Sorry, I was under the impression that you somehow split the make jobs and use the x86 systems for the individual compilation. That's why I asked you for help on this.
I do, but the linking is done natively.
Why don't you look at the x-toolchain: ftp://ftp.arm.slackware.com/slackwar...s/x-toolchain/
You'd need to use the build script there, and then run distccd on the x86 (see the rc.local-addition file).
On the ARM side, you'd look at "dbuild" which basically creates symlink wrappers for gcc et al to distcc, and sets $PATH and a few other things in the shell environment.
It's a bit fiddly because it's set up for the ARM port environment only, but is easy enough to adapt if you spend time looking at what it's doing.
Even if you scale back the number of parallel jobs, you can still make the x86 do most of the compilation. My cross toolchain only supports gcc though - I have not looked into llvm yet.
Escaped the out of memory form opencollada, reported in the previous post, but got this morning into another one, this time a serious one
It happened after about 48 hours into the compilation and it was caused by building libetonyek. The only larger source files I found where in:
/mnt/hd/libreoffice/tmp/SBo/libreoffice-5.4.2.2/workdir/UnpackedTarball/libetonyek/src/lib/.deps
The crash:
I was monitoring the system with the help of Monitorix and noticed the bumps (100%) usage in the Memory Allocation/ VFS graphs.
ATM I'd stop investing my time/efforts in this, I've never imagined that I'll need more than 500-900 MB for a compilation and considering this a slight "insult" that I'd expect maybe from the Redmond guys but not from the OpenSource community. But maybe some LibreOffice developers were working at Redmond before ...
Maybe during the weekend I'll start it again with 4 make jobs on 900MB RAM (hope I won't forget again to edit the /boot/config.txt & reboot) and a 4GB external HDD swap (I tried to avoid this until now).
@drmozes
Thanks, I was looking into it when I first joined LQ and was considering compiling my own kernel for the Pi boards, downloaded some of your stuff but never really had time to look and understand/learn it. I got successful until now by only using 4 armv7 cores and 900MB RAM, apparently this is not enough for larger compilations anymore. I never used a swap to substitute the RAM especially for a compilation, regardless of how fast the storage is (it will get bottle-necked anyways matching the USB speed on the Raspberry Pi).
I don't own any SSD, I consider them a luxury, still expensive, only half of the capacity optimally usable (I would leave the other half for the wear leveling) and unreliable.
Intel's 3D XPoint tech looks promising though (robustness).
Last edited by abga; 11-10-2017 at 12:34 AM.
Reason: changed format
I just started a new compilation without Java & with Apache ANT & with KDE4 on a Pi2B - 957 MB RAM, external HDD working directory, 4 make jobs and a 4 GB external HDD swap partition. I'll report back in the evening, gtg.
If I somehow fail again, then I'll use the build wonder machine drmozes created.
@Linux.tar.gz
What's your status on this? Have you got it compiled and working finally?
Last edited by abga; 11-13-2017 at 04:12 PM.
Reason: correction - without JAVA & with Apache ANT & with KDE4
I tried to build with -O0, as said in the gcc bug report, but the error was the same.
I now have to look at the source files to see what is moved by gengal.bin and try to do the stuff manually, then resume the compilation.
Not sure to succeed...
It was nothing to update yesterday evening as the compilation was still running. Unfortunately, today around noon I got a short power drop (some switching that happens 1-2 a week) that blew my compilation I only use laptops and a small (and very tired) UPS for my monitor & a switch, the Pi boards I backup through some cheap & modified Chinese power banks that should output 1,5A for a short period. The power outage was a little bit longer and i got the external HDD disconnected & the Pi2Board frozen. Bad luck.
Now, I got interested and started this compilation after I experienced how fast LibreOffice runs under Raspbian on the Raspberry Pi0. During this 25 hour partial compilation with 957MB RAM and 4GB swap, which was an utterly stupid approach from the very beginning, but then somehow one needs to tests his knowledge every now and then, I got into exactly what I was expecting, compilation done on the swap and not in RAM.
Yesterday I observed many times some cc1plus processes exceeding 400-500MB and today in the morning before I left home and the compilation reached the Calc application, I got my external HDD working 100% and by checking the system stats I observed a wave-like behavior - for every 4 cc1plus new jobs the RAM was filling up really fast and the swap usage was reaching 600-800MB, by the time the cc1plus were done and the system was clearing the RAM/swap, a new bunch of cc1plus processes were starting again filling everything up.
@drmozes - your wonder machine looks to be the only option left. I'll definitely take a look into it these days and hopefully won't need to annoy you too much with support requests.
@Linux.tar.gz
After 25 hours of compilation, with only some gcc 7.1 related notes and warnings that didn't break anything, I got apparently into the sc source folder that belongs to the Calc application: http://www.lanedo.com/exploring-the-...ice-code-base/
And my last lines in the 9MB big and 124440 lines long build-log were:
Can you please change the title of this thread, now that your original issue seems to be resolved, and put a more generic title like Building LibreOffice on Slackware ARM. Maybe we'll get more Slackers interested/involved and get some documentation/instructions/Slack.Build done in the end.
Thanks!
Can you please change the title of this thread, now that your original issue seems to be resolved, and put a more generic title like Building LibreOffice on Slackware ARM. Maybe we'll get more Slackers interested/involved and get some documentation/instructions/Slack.Build done in the end.
Thanks!
Quote:
Originally Posted by Linux.tar.gz
Like the ones you've seen, there's already enough threads about building LO.
And the vpush error is the error the Slackware ARM users will encounter first, so they'll come here.
I'm new to Slackware and to building software in general. I can report that I've built a stripped-down version of LibreOffice 6.0.2 on my Raspberry Pi 3 running Slackware ARM 14.2.
I use LibreOffice almost exclusively for its Writer component, and in particular for working with DOCX files to which tracked changes have been applied. My build seems to offer such functionality just fine. To get the build to succeed, though, I had to strip out a lot of other functionality.
I used a modified version of the slackbuilds.org LibreOffice script. To satisfy the dependencies:
(1) I built OpenJDK 7 using Alien Bob's openjdk build script. I first built the (2) apache-ant and (3) rhino packages as prerequisite dependencies; I built both of them from Alien's scripts without changes. For the openjdk package, I changed the BOOTSTRAP variable to "YES", per the instructions in the script.
(4) I built perl-Archive-Zip per slackbuilds script, unchanged.
(5) I built Python 3 per slackbuilds script, unchanged.
(6) I built LibreOffice using modifications to the slackbuilds.org script. These modifications were based heavily on suggestions from the Linux from Scratch website and the description of "LibreOffice Vanilla for Mac" on the LibreOffice wiki.
Specifically, I edited the './configure' section of the script to read, in part, as follows:
--disable-odk
--disable-pdfium
--disable-firebird-sdbc
--disable-postresql-sdbc
--disable-gltf
--disable-collada
--disable-gstreamer-1-0
--disable-lpsolve
--disable-coinmp
--disable-online-update # not sure this is needed; disabled by default on Linux anyway?
Before doing any of these builds, I mounted a gigantic external hard drive as /tmp. (Again, I'm new to building software; I'm not sure if this is best practice, but it's what I did.) The LibreOffice build took about a day. I kept the Pi and the external hard drive on a wire rack to help with air flow ventilation.
Of the functionality I disabled for this build, the one I'm least happy about is pdfium, which (news to me) is the PDF rendering engine used in LibreOffice 6. I just couldn't get the build to complete as long as it was included. Furthermore, I can't see any evidence that anyone has ever successfully built pdfium on Slackware ARM. Perhaps someone more knowledgable than me can advise?
I'm still testing this LibreOffice build and will report back with any issues.
Can you post the SlackBuild file you used please ?
The only modifications I made to the LibreOffice script from slackbuilds.org were the ones I mentioned above. Here's the modified script in its entirety:
Code:
#!/bin/sh
#
# ex:set ai shiftwidth=4 inputtab=spaces smarttab noautotab:
# Slackware build script for LibreOffice
# Copyright 2015-2018 Christoph Willing Brisbane, Australia
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=LibreOffice
SRCNAM=libreoffice
VERSION=${VERSION:-6.0.2.1}
SHORT_VERSION=${VERSION%.*.*}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PACKAGER=${PACKAGER:-"AnonymousCoward"}
HAVE_SRCS_TARBALL=${HAVE_SRCS_TARBALL:-1}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $SRCNAM-$VERSION
tar xvf $CWD/$SRCNAM-$VERSION.tar.xz
cd $SRCNAM-$VERSION
if [ "$HAVE_SRCS_TARBALL" = "1" ]; then
tar xvf $CWD/$SRCNAM-${VERSION}-srcs.tar.xz
fi
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
-o -perm 511 \) -exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
# Options
avahi="" ; [ "${AVAHI:-no}" != "no" ] && avahi="--enable-avahi"
vlc="" ; [ "${VLC:-no}" != "no" ] && vlc="--enable-vlc"
kde4="--enable-kde4" ; [ "${KDE4:-yes}" != "yes" ] && kde4="--disable-kde4"
LOLANGS=${LOLANGS:-"de es fr id it ja nl vi zh-CN"}
use_ccache="--disable-ccache" ; [ "${USE_CCACHE:-no}" != "no" ] && use_ccache=""
# By default, LibreOffice ignores MAKEFLAGS -j option and uses all available cpu cores.
parallel=""
# If MAKEFLAGS contains -j option, we extract its value to override the default.
jval="$(echo $MAKEFLAGS |grep -o "\-j *[0-9]*" | grep -o "[0-9]*")" || true
[ -n "$jval" ] && parallel="--with-parallelism=$jval"
# If PARALLEL environment variable is set, use that to override everything.
[ "${PARALLEL:-0}" != "0" ] && parallel="--with-parallelism=$PARALLEL"
JAVA=${JAVA:-openjdk}
if [ "$JAVA" = "openjdk" ]; then
. /etc/profile.d/openjdk.sh
use_java="--with-java=java"
elif [ "$JAVA" = "openjdk8" ]; then
. /etc/profile.d/openjdk8.sh
use_java="--with-java=java"
elif [ "$JAVA" = "jdk" ]; then
. /etc/profile.d/jdk.sh
use_java="--with-java=java"
elif [ "$JAVA" = "no" ]; then
use_java="--with-java=no"
fi
./configure \
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
NSS_CFLAGS="$(pkg-config --cflags-only-I mozilla-nss)"\
--prefix=/usr \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
--libdir=/usr/lib$LIBDIRSUFFIX \
--sysconfdir=/etc \
--build=$ARCH-slackware-linux \
--with-build-version="SlackBuild for $PRGNAM-$VERSION by $PACKAGER" \
--with-vendor="Just Another Slacker" \
--with-lang="$LOLANGS" \
--enable-release-build=yes \
--enable-python="system" \
--enable-gio \
--enable-ext-mariadb-connector \
--disable-odk \
--disable-pdfium \
--disable-firebird-sdbc \
--disable-postgresql-sdbc \
--disable-gltf \
--disable-collada \
--disable-gstreamer-1-0 \
--disable-lpsolve \
--disable-coinmp \
--disable-online-update \
$avahi \
$vlc \
$kde4 \
$use_ccache \
$use_java \
$parallel \
--with-x \
--with-tls="nss" \
--without-krb5 \
--without-gssapi \
--without-junit \
--with-help \
--with-system-boost \
--with-system-cairo \
--with-system-curl \
--with-system-dicts \
--with-system-expat \
--with-system-hunspell \
--with-system-icu \
--with-system-jpeg \
--with-system-lcms2 \
--with-system-libpng \
--with-system-librevenge \
--with-system-libwpd \
--with-system-libwpg \
--with-system-libxml \
--with-system-mariadb \
--with-system-neon \
--with-system-nss \
--with-system-openssl \
--with-system-poppler \
--with-system-redland \
--with-system-sane \
--with-system-zlib \
#Create a srcs tarball if we don't already have one
chmod a+x bin/unpack-sources
if [ "$HAVE_SRCS_TARBALL" = "0" ]; then
make fetch
tar cvf - external/tarballs | xz -c > $CWD/$SRCNAM-$VERSION-srcs.tar.xz
echo ; echo "Run build script again with HAVE_SRCS_TARBALL=1"
exit 0
fi
patch -p0 < $CWD/no-check-if-root.diff
export LDFLAGS="-lboost_system"
make build-nocheck
make distro-pack-install DESTDIR=$PKG
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
# Prefer GTK2 toolkit
cd $PKG/usr/lib$LIBDIRSUFFIX/$SRCNAM/program
sed -i -e '/^#\ restore/i# Prefer GTK2\nexport SAL_USE_VCLPLUGIN=${SAL_USE_VCLPLUGIN:-gtk}\n' soffice
cd -
cd $PKG/usr/lib$LIBDIRSUFFIX
mv $SRCNAM $SRCNAM-$VERSION
ln -s $SRCNAM-$VERSION $SRCNAM
cd -
for df in $PKG/usr/lib$LIBDIRSUFFIX/$SRCNAM-$VERSION/share/xdg/*.desktop ; do
sed -i -e "s/libreofficedev$SHORT_VERSION/libreoffice/g" $df
done
PYSITEDIR=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
mkdir -p $PKG/$PYSITEDIR
cat <<EOF >$PKG/$PYSITEDIR/pyuno.pth
import sys; sys.path.insert(0,'/usr/lib$LIBDIRSUFFIX/libreoffice/program')
EOF
chmod 0644 $PKG/$PYSITEDIR/pyuno.pth
mkdir -p $PKG/etc/profile.d
sd_prog=/usr/lib$LIBDIRSUFFIX/libreoffice/program
cat <<EOF >$PKG/etc/profile.d/libreoffice.sh
export UNO_PATH=$sd_prog
export URE_BOOTSTRAP=vnd.sun.star.pathname:$sd_prog/fundamentalrc
export PATH=\${PATH}:$sd_prog
EOF
cat <<EOF >$PKG/etc/profile.d/libreoffice.csh
setenv UNO_PATH $sd_prog
setenv URE_BOOTSTRAP vnd.sun.star.pathname:$sd_prog/fundamentalrc
setenv PATH \${PATH}:$sd_prog
EOF
chmod 0755 $PKG/etc/profile.d/libreoffice.{csh,sh}
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a COPYING* README* $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
(I'm new here; not sure if it's bad form to post a whole script like this. Apologies if I'm in the wrong.)
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.