Ray-V / tde-slackbuilds

A fork of Thorn Inurcide's SlackBuilds for the Trinity Desktop Environment
18 stars 6 forks source link

tqt3 doesn't compile on some systems #23

Closed yurytch closed 3 years ago

yurytch commented 3 years ago

On current slackware there's an error when tqt3 build attempts to include <rpc/rpc.h> I fixed this for my local build of 14.0.9 by doing this:

--- Deps/tqt3/tqt3.SlackBuild.prev      2021-02-24 17:07:10.000000000 +0300
+++ Deps/tqt3/tqt3.SlackBuild   2021-02-26 10:19:05.385040919 +0300
@@ -113,6 +113,7 @@
  -verbose \
  -I/usr/include/freetype2 \
  -I/usr/include/mysql \
+ -I/usr/include/tirpc \
  -L/usr/lib$LIBDIRSUFFIX \
  -system-zlib \
  -qt-imgfmt-png \
Ray-V commented 3 years ago

Thanks for that.

I build TDE in a chroot, and it prompted me to update to Slackware-current as at 23rd February, which will be useful for pre-empting any issues prior to Slackware 15 release.

Problem is, that broke a few of the builds, including a further problem with the tqt3 build.

Most of the failures were like undefined reference to `TQGLWidget::staticMetaObject()' which was caused by OpenGL not being included in the tqt3 build.
I haven't yet figured out what changed to cause this, but the patch becomes:

--- tqt3.SlackBuild
+++ tqt3.SlackBuild
@@ -47,0 +48,2 @@
+## [open]GL libs might be installed in ../lib64
+sed -i "s|X11R6/lib|&$LIBDIRSUFFIX|" mkspecs/linux-g++/qmake.conf
@@ -115,0 +118 @@
+ -I/usr/include/tirpc \

There are failures with other builds [*] which I want to fix before committing the changes, so let's leave this issue open in case others have problems with building on Slackware-current.

[*]
Core/tdegraphics
WITH_PDF fails

Misc/mp4v2
Patched for gcc10 thanks to gentoo

Apps/kaffeine
gstreamer issues, like undefined reference to `gst_video_overlay_get_type'
which needs the video library added to the build

Misc/inkscape
Updated to use v1.0.2 for Slackware-current

yurytch commented 3 years ago

Well, thank YOU for spending on this project.

If that helps any, I'm using ca. 6 weeks old snapshot. And those subdirs in Misc, they are just regular SlackBuilds, right? Noticed that inkscape only now. (No, seems they're not.)

Ray-V commented 3 years ago

And those subdirs in Misc, they are just regular SlackBuilds, right? Noticed that inkscape only now. (No, seems they're not.)

Correct, that's a yes and no.

Yes, they are SlackBuilds which will build .txz packages with no TDE dependencies and the apps will therefore run without TDE installed.
Most of the Misc builds are for dependencies for TDE apps, either build-time or run-time. Inkscape though was added as an alternative gui to potrace.

No, they won't run as ./xxx.SlackBuild. They're set up in the same format as the TDE SlackBuilds and will therefore only run from BUILD-TDE.sh, requiring get-source.sh, which both provide variables and functions for the script.

yurytch commented 3 years ago

I'll continue this thread, if it's all the same to you. So, 'inkscape' doesn't compile with trunk checkout on my system. As far as I can see, the 'gdl' package which is created in BUILD-TD.sh as a pre-requisite, lacks gdl.pc in PKG_CONFIG_PATH AND neither gdk 3. nor gdkmm 3., which are required, are in the base distro.

Ray-V commented 3 years ago

I'll continue this thread, if it's all the same to you.

Absolutely - all constructive feedback is welcome, although I do try to get things right so that it's not necessary!

So, 'inkscape' doesn't compile with trunk checkout on my system.

Not sure what this is - is it a clone/checkout from git? which was version 1.1 last time I checked.
I've only tested the build with the release version 1.0.2 set in the SlackBuild.

As far as I can see, the 'gdl' package which is created in BUILD-TD.sh as a pre-requisite, lacks gdl.pc in PKG_CONFIG_PATH

As it's a locally built package, I built it to install to /usr/local/lib[64], and that's where it is on my system -
/usr/local/lib64/pkgconfig/gdl-3.0.pc.
Is /usr/local/lib64/pkgconfig/ in your PKG_CONFIG_PATH?

neither gdk 3. nor gdkmm 3., which are required, are in the base distro.

I installed l/gtk+3-3.24.25-x86_64-1.txz for my build which gives me gdk3 -

usr/lib64/libgdk-3.so.0.2404.21
usr/lib64/pkgconfig/gdk-3.0.pc

and l/gtkmm3-3.24.3-x86_64-3.txz which gives me gdkmm3 -

usr/lib64/libgdkmm-3.0.so.1.1.0
usr/lib64/pkgconfig/gdkmm-3.0.pc

yurytch commented 3 years ago

1) By 'trunk checkout' I mean tde-slackbuilds-master.zip archive which is downloadable by 'code download' funcrtion in github. That IS trunk, right? 2) The 'gdl' package on my system is somehow built WITHOUT any .pc files in .txz file. I've checked. No idea right now how this happens. 3) My PKG_CONFIG_PATH is okay, but I THINK I've seen the BUILD-TDE.sh modify it incorrectly (throwing out /usr/lib64/pkgconfig). Not really sure of this right now, will have to recheck this. 4) On gdk/gdkmm issue I might have given a false alarm (got an error on pkg-config --exists 'gdk-3.0', so might be related to item 3 on this list).

Ray-V commented 3 years ago

That IS trunk, right?

I don't know what it should be called. I thought you were referring to the inkscape source.

The 'gdl' package on my system is somehow built WITHOUT any .pc files

That's generated during ./configure - this is the relevant part of the output in my build:

configure: creating ./config.status
config.status: creating Makefile
config.status: creating gdl/Makefile
config.status: creating po/Makefile.in
config.status: creating docs/Makefile
config.status: creating docs/reference/Makefile
config.status: creating docs/reference/version.xml
config.status: creating gdl.spec
config.status: creating gdl-3.0.pc
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing po/stamp-it commands

Is gdl-3.0.pc not being built on your system, or is it built but not installed?

I suggest you look in config.log for any '$? = 1' entries to see if there are any failures which might be the cause of gdl-3.0.pc not being built.

My PKG_CONFIG_PATH is okay, but I THINK I've seen the BUILD-TDE.sh modify it

That only happens if you choose the option - the default is to do nothing ..

If you've selected the 'Leave' option and the PKG_CONFIG_PATH is being modified, please let me know because that's not something I've experienced.

got an error on pkg-config --exists 'gdk-3.0'

pkg-config --exists 'gdk-3.0' --print-errors is more informative ..

yurytch commented 3 years ago

With May 21 checkout of build scripts, gdl-3.0.pc is built (is present in the build dir), but is not installed (in /tmp/build/package_gdl), and so isn't included in the .txz file.

With today's checkout of build scripts, I couldn't re-check this, as the build of gdl is now somehow hardwired to the presence of gtkdoc on the system. I added --disable-gtk-doc but looks like it's ignored in the 'install' phase of gdl build.

A fragment of gdl build log follows: ... /bin/ginstall -c -m 644 ./html/widget.html Traceback (most recent call last): File "/usr/bin/gtkdoc-rebase", line 28, in from gtkdoc import common, config, rebase ModuleNotFoundError: No module named 'gtkdoc' make[3]: [Makefile:855: install-data-local] Error 1 make[3]: Leaving directory '/tmp/build/gdl-3.34.0/docs/reference' make[2]: [Makefile:597: install-am] Error 2 make[2]: Leaving directory '/tmp/build/gdl-3.34.0/docs/reference' make[1]: [Makefile:411: install-recursive] Error 1 make[1]: Leaving directory '/tmp/build/gdl-3.34.0/docs' make: [Makefile:527: install-recursive] Error 1

Ray-V commented 3 years ago

With today's checkout of build scripts, I couldn't re-check this, as the build of gdl is now somehow hardwired to the presence of gtkdoc on the system

Not on my system.

This may be a misleading error message if you're running the build with the default of 6 parallel make jobs. In that case commands, their output, and any error messages are usually mixed up between jobs.

I've attached a copy of the build log generated when I did the ninja build test. [ninja is a build option from 23rd May].
Looking in that, you'll see

checking for gtk-doc... no
configure: WARNING:
  You will not be able to create source packages with 'make dist'
  because gtk-doc >= 1.4 is not found.
checking for gtkdoc-check... no
checking for gtkdoc-check... no
checking for gtkdoc-rebase... no
checking for gtkdoc-mkpdf... no
checking whether to build gtk-doc documentation... no
checking for GTKDOC_DEPS... yes

and then later

 /usr/bin/ginstall -c -m 644 ./html/widget.html

and then in the Slackware package list

usr/local/share/gtk-doc/html/gdl-3.0/widget.html

Take a look at the build log, see what differences there are to your build, and we'll take it from there ..
The gdl build doesn't use ninja so should look the same on your system however you set up the build.


Just a thought.
Note the line checking for GTKDOC_DEPS... yes.
Ref: config.log:

configure:18426: checking for GTKDOC_DEPS
configure:18433: $PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0  >= 2.10.0"
configure:18436: $? = 0
configure:18450: $PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0  >= 2.10.0"
configure:18453: $? = 0
configure:18491: result: yes

Do you see any errors with this check?

I've attached a copy of config.log as well in case there's anything in there that might help you.

inkscape-1.0.2-x86_64-ninja-test-build-log.tar.gz config.log.tar.gz

yurytch commented 3 years ago

Sorry, got distracted by other issues then, didn't even notice that reply.

I looked more closely into that, and that's what happens in GDL: in some parts of it gtkdoc requirement is hardcoded, although gtkdoc is not needed for GDL's build success so I 'hotwired' it like so (also, inkscape's cmake configuration requires gtest presence, it doesn't seem to download it as/if required):

--- inkscape.SlackBuild.prev   ^2021-08-15 00:06:00.000000000 +0300
+++ inkscape.SlackBuild^2021-08-17 10:09:47.812019150 +0300
@@ -63,8 +63,13 @@
  [[ $LOCALES == *$locale* ]] && echo $locale >> po/LINGUAS
  done
.
+sed --in-place='.wantsgtkdoc' -e 's,enable\-gtk\-doc,disable-gtk-doc,g' Makefile.am
+aclocal
+sed --in-place='.wantsgtkdoc' -e '1i \
+GTKDOC_REBASE=true' gtk-doc.make
+
 [[ $(cat $TMPVARS/BuildOptions) == *no_warn* ]] && C_Flags='CFLAGS=-w'
-./configure --libdir=/usr/local/lib$LIBDIRSUFFIX ${C_Flags:-}
+./configure --libdir=/usr/local/lib$LIBDIRSUFFIX ${C_Flags:-} --disable-gtk-doc
.
 PKG=$TMP_BUILD/package-gdl
 make_fn
@@ -201,6 +206,7 @@
 ## LIB_SUFFIX is used for v0.92.4
 # ### TODO docs and man to /usr/local ..
 cmake ${G_NINJA:-} \
+    -DBUILD_TESTING="OFF" \
     -DCMAKE_C_FLAGS="$SLKCFLAGS" \
     -DCMAKE_CXX_FLAGS="$SLKCFLAGS" \
     -DCMAKE_C_COMPILER=$COMPILER \

With these, inkscape proper starts building, but fails at ca. 61% with tons of diagnostics like these:

[ 61%] Building CXX object src/CMakeFiles/inkscape_base.dir/trace/autotrace/inkscape-autotrace.cpp.o
In file included from /usr/include/glib-2.0/glib/gatomic.h:31,
                 from /usr/include/glib-2.0/glib/gthread.h:32,
                 from /usr/include/glib-2.0/glib/gasyncqueue.h:32,
                 from /usr/include/glib-2.0/glib.h:32,
                 from /tmp/build/tmp-inkscape/inkscape-1.0.2_2021-01-15_e86c870879/src/3rdparty/autotrace/types.h:24,
                 from /tmp/build/tmp-inkscape/inkscape-1.0.2_2021-01-15_e86c870879/src/3rdparty/autotrace/autotrace.h:38,
                 from /tmp/build/tmp-inkscape/inkscape-1.0.2_2021-01-15_e86c870879/src/trace/autotrace/inkscape-autotrace.h:20,
                 from /tmp/build/tmp-inkscape/inkscape-1.0.2_2021-01-15_e86c870879/src/trace/autotrace/inkscape-autotrace.cpp:15:
/usr/include/c++/10.3.0/type_traits:56:3: error: template with C linkage
   56 |   template<typename _Tp, _Tp __v>
      |   ^~~~~~~~
Ray-V commented 3 years ago

It looks as though your problems start with gdl, so let's go back to that.

Re: May 26, 2021 comment ..

/bin/ginstall -c -m 644 ./html/widget.html
Traceback (most recent call last):
File "/usr/bin/gtkdoc-rebase", line 28, in \
from gtkdoc import common, config, rebase
ModuleNotFoundError: No module named 'gtkdoc'

I've got python3-3.9.2-x86_64-1 and linuxdoc-tools-0.9.73-x86_64-5 installed to get the gtkdoc-rebase script.

gtkdoc-rebase is a python3 script and line 28 is
from gtkdoc import common, config, rebase
which ties in with the error message.

linuxdoc-tools installs

/usr/bin/gtkdoc-rebase
...
/usr/share/gtk-doc/python/gtkdoc/common.py
/usr/share/gtk-doc/python/gtkdoc/config.py
...
/usr/share/gtk-doc/python/gtkdoc/rebase.py

so you've got the script, but not the module.

I don't get any ModuleNotFoundError, but I can reproduce the error by hiding /usr/share/gtk-doc/python/gtkdoc, so it looks as though your installation is messed up somewhere.

inkscape's cmake configuration requires gtest presence

This is optional - if gtest isn't installed, BUILD_TESTING is set OFF - last item in the 'Configuration Summary'.

yurytch commented 3 years ago

Thank you! That was good hint/hit, actually. Before looking into linuxdoc manifest I wasn't aware that gtkdoc python modules reside separately, not in usr/lib/python. And I use Erik's (alienBOB) liveslak in its ''doc trimmed" variant, which, as it is, has those removed. I'll report this.

Template error is something else, though.

Also, when TDM dialog offers the choice between rc4l and rl4, and rl4 is selected, could the script also NOT touch /etc/X11/xinit/xinitrs link?