Re: x11/qt5/qtbase on arm

2020-10-14 Thread Matthias Kilian
Hi,

On Wed, Oct 14, 2020 at 02:26:48PM +0100, Stuart Henderson wrote:
> > ===> poppler-20.09.0 depends on: qttools-*
> > 
> > In print/poppler/Makefile you have
> > 
> > NOT_FOR_ARCHS-qt5 = arm
> > 
> > But there is no condition to this
> > 
> > MODULES+=   x11/qt5
> > 
> > so qttools is pulled in.
> 
> Diff to fix that below. kili, ok?

Yes, looks sane.

Ciao,
Kili

> Index: Makefile
> ===
> RCS file: /cvs/ports/print/poppler/Makefile,v
> retrieving revision 1.161
> diff -u -p -r1.161 Makefile
> --- Makefile  9 Sep 2020 20:16:44 -   1.161
> +++ Makefile  14 Oct 2020 13:06:19 -
> @@ -42,7 +42,9 @@ cWANTLIB=   expat freetype fontconfig jpeg
>  
>  MODULES= devel/cmake
>  
> +.if ${BUILD_PACKAGES:M-qt5}
>  MODULES+=x11/qt5
> +.endif
>  
>  # devel/boost only as build+run dependency, poppler uses
>  # header-only classes (from boost/containers/small_vector.hpp)
> 



Re: x11/qt5/qtbase on arm

2020-10-14 Thread adr
On Wed, Oct 14, 2020 at 10:06:34AM +0100, Stuart Henderson wrote:
> What is the actual port you are trying to build, is it something where
> it might be possible to remove qt5 from the chain instead of fixing
> qt5 build?

===> poppler-20.09.0 depends on: qttools-*

In print/poppler/Makefile you have

NOT_FOR_ARCHS-qt5 = arm

But there is no condition to this

MODULES+=   x11/qt5

so qttools is pulled in.

But I'm here, lets take a look, qt is popular and it could fix a
lot of packages, QtWebkit|QtWebengine could be useful in a machine
with more ram... etc.

> I am asking because bulk builds on armv7 already take about 40 days - it
> is pretty much pointless building snapshot packages on an architecture
> with that kind of latency (OpenBSD library ABI is not really stable
> so you will be lucky to get packages that work with a given snapshot
> unless you save snaps from before each library bump).
> 
> Fixing things to enable qt5 will make this situation even worse. Even if
> you don't care about snapshots, this would further delay packages being
> available after "base release" of a new OS version.

You don't have a way to blacklist ports in the bulk build system?

Just for curiosity, what machine are you using to build the armv7
packages?

adr.



Re: x11/qt5/qtbase on arm

2020-10-14 Thread Stuart Henderson
On 2020/10/14 11:22, a...@sdf.org wrote:
> On Wed, Oct 14, 2020 at 10:06:34AM +0100, Stuart Henderson wrote:
> > What is the actual port you are trying to build, is it something where
> > it might be possible to remove qt5 from the chain instead of fixing
> > qt5 build?
> 
> ===> poppler-20.09.0 depends on: qttools-*
> 
> In print/poppler/Makefile you have
> 
> NOT_FOR_ARCHS-qt5 = arm
> 
> But there is no condition to this
> 
> MODULES+=   x11/qt5
> 
> so qttools is pulled in.

Diff to fix that below. kili, ok?

Index: Makefile
===
RCS file: /cvs/ports/print/poppler/Makefile,v
retrieving revision 1.161
diff -u -p -r1.161 Makefile
--- Makefile9 Sep 2020 20:16:44 -   1.161
+++ Makefile14 Oct 2020 13:06:19 -
@@ -42,7 +42,9 @@ cWANTLIB= expat freetype fontconfig jpeg
 
 MODULES=   devel/cmake
 
+.if ${BUILD_PACKAGES:M-qt5}
 MODULES+=  x11/qt5
+.endif
 
 # devel/boost only as build+run dependency, poppler uses
 # header-only classes (from boost/containers/small_vector.hpp)

> But I'm here, lets take a look, qt is popular and it could fix a
> lot of packages, QtWebkit|QtWebengine could be useful in a machine
> with more ram... etc.

It's still pretty limited. RAM available to a single process is limited
by MAXDSIZ which is 1GB on armv7. Maybe qtwebkit can be got to work with
some effort, qtwebengine, which includes most of chromium, doesn't even
build on i386 (uses too much RAM), very unlikely to happen on OpenBSD on
32-bit arm.

> > I am asking because bulk builds on armv7 already take about 40 days - it
> > is pretty much pointless building snapshot packages on an architecture
> > with that kind of latency (OpenBSD library ABI is not really stable
> > so you will be lucky to get packages that work with a given snapshot
> > unless you save snaps from before each library bump).
> > 
> > Fixing things to enable qt5 will make this situation even worse. Even if
> > you don't care about snapshots, this would further delay packages being
> > available after "base release" of a new OS version.
> 
> You don't have a way to blacklist ports in the bulk build system?

No. Plus, a relatively complex port which isn't built in bulk builds is
unlikely to stay working for any length of time.

> Just for curiosity, what machine are you using to build the armv7
> packages?

A cluster of 4GB Cubox-i systems.

Contrast with arm64 which is very different. There is actual proper
server hardware available to use for builds for this; two machines do
a full bulk build in a couple of days, generating more packages than
are available on i386.



x11/qt5/qtbase on arm

2020-10-14 Thread adr
Hello,

>From other ports I arrived to x11/qt5/qtbase.

The first broken dependency of qtbase is from pulseaudio:

  audio/pulseaudio
sysutils/consolekit2
  sysutils/polkit
devel/spidermonkey68 *

In Makefile it reads:

=
# Nothing in qtbase links to pulseaudio, but configure checks
# are recorded.
# The atspi is checked at configure time and used via D-Bus.
BUILD_DEPENDS =audio/pulseaudio \
=

This means that qt5 will not support pulse audio if it's not
installed before compilation?

If that is the case, as it is broken for now on arm, it wouldn't
be better to make a port flavor, or remove the dependency for arm
until pulseaudio is fixed?

I don't want to mess with mozilla for now, so I just removed the
pulseaudio dependency.

Now, the problem with qtbase is that clang is not implementing
some neon intrinsics on arm, e.g. vcvt_f16_f32.

I had problems in the past with neon in ports on arm, so I just
disabled all neon support:

===
--- Makefile.orig   Tue Oct 13 23:24:26 2020
+++ MakefileTue Oct 13 23:24:13 2020
@@ -116,8 +116,8 @@
 # Nothing in qtbase links to pulseaudio, but configure checks
 # are recorded.
 # The atspi is checked at configure time and used via D-Bus.
-BUILD_DEPENDS =audio/pulseaudio \
-   geo/geoclue \
+#BUILD_DEPENDS =   audio/pulseaudio \
+BUILD_DEPENDS =geo/geoclue \
x11/gnome/at-spi2-core
 
 RUN_DEPENDS-main = ${RUN_DEPENDS} \
@@ -256,8 +256,19 @@
 
 post-extract:
mkdir -p ${WRKDIST}/mkspecs/openbsd-clang
+# Some FP16 instrinsics aren't available on arm.
+.if ${MACHINE_ARCH} == "arm"
+   grep -v 'load(qt_config)' ${FILESDIR}/clang-qmake.conf \
+   > ${WRKDIST}/mkspecs/openbsd-clang/qmake.conf
+   echo QMAKE_CFLAGS = -U__ARM_NEON__ -U__ARM_NEON -DPNG_ARM_NEON_OPT=0 \
+   >> ${WRKDIST}/mkspecs/openbsd-clang/qmake.conf
+   echo QMAKE_CXXFLAGS = 'QMAKE_CFLAGS' \
+   >> ${WRKDIST}/mkspecs/openbsd-clang/qmake.conf
+   echo 'load(qt_config)' >> ${WRKDIST}/mkspecs/openbsd-clang/qmake.conf
+.else
cp ${FILESDIR}/clang-qmake.conf \
${WRKDIST}/mkspecs/openbsd-clang/qmake.conf
+.endif
cp ${WRKDIST}/mkspecs/openbsd-g++/qplatformdefs.h \
${WRKDIST}/mkspecs/openbsd-clang/
===

I used an orange pi one, so I had to add 2G of swap.

The data size limit has to be increased. I used

ulimit -d 1048576

but maybe just around 600M will be sufficient.

I had to shave twice before it finished, but it compiled.

I will try in the future disabling just FP16 intrinsics with

-U__ARM_FP16_FORMAT_IEEE

Regards,
adr.



Re: x11/qt5/qtbase on arm

2020-10-14 Thread Stuart Henderson
On 2020/10/14 07:08, a...@sdf.org wrote:
> Hello,
> 
> From other ports I arrived to x11/qt5/qtbase.

What is the actual port you are trying to build, is it something where
it might be possible to remove qt5 from the chain instead of fixing
qt5 build?

I am asking because bulk builds on armv7 already take about 40 days - it
is pretty much pointless building snapshot packages on an architecture
with that kind of latency (OpenBSD library ABI is not really stable
so you will be lucky to get packages that work with a given snapshot
unless you save snaps from before each library bump).

Fixing things to enable qt5 will make this situation even worse. Even if
you don't care about snapshots, this would further delay packages being
available after "base release" of a new OS version.