Compile issues with SCons 3 / Python 3

Bug #1817742 reported by Freier Radikaler
18
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Mixxx
Fix Released
High
Jan Holthuis

Bug Description

There seems to be a header file missing in the current master branch of MIXXX. So compilation fails:

Building compilation database compile_commands.json
g++ -o lin64_build/src/analyzer/trackanalysisscheduler.o -c -std=c++11 -pipe -Wall -Wextra -g -fPIC -O3 -ffast-math -funroll-loops -fomit-frame-pointer -mtune=generic -pthread -Dx86_64 -DMIXXX_BUILD_DEBUG -D__LINUX__ -D__UNIX__ -DSETTINGS_PATH=\".mixxx/\" -DSETTINGS_FILE=\"mixxx.cfg\" -DUNIX_SHARE_PATH=\"/usr/local/share/mixxx\" -DUNIX_LIB_PATH=\"/usr/local/lib/mixxx\" -DQT_TABLET_SUPPORT -DQT_SHARED -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_OPENGL_LIB -DQT_SCRIPT_LIB -DQT_SQL_LIB -DQT_SVG_LIB -DQT_WIDGETS_LIB -DQT_XML_LIB -DQT_CONCURRENT_LIB -DQT_NETWORK_LIB -DQT_OPENGL_LIB -DQT_SCRIPT_LIB -DQT_SCRIPTTOOLS_LIB -DQT_SQL_LIB -DQT_SVG_LIB -DQT_TESTLIB_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_DBUS_LIB -DQT_CORE_LIB -D__SNDFILE__ -DSFC_SUPPORTS_SET_COMPRESSION_LEVEL -Dkiss_fft_scalar=double -DUSE_PTHREADS -D__MAD__ -D__HID__ -D__BULK__ -D__VINYLCONTROL__ -D__BROADCAST__ -D__OPUS__ -D__SQLITE3__ -D__LILV__ -D__BATTERY__ -Ilin64_build/src -Isrc -I/usr/include/soundtouch -Ilib/replaygain -I/usr/include/qt5/Qt5DBus -I/usr/include/qt5/QtConcurrent -I/usr/include/qt5 -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtOpenGL -I/usr/include/qt5/QtScript -I/usr/include/qt5/QtScriptTools -I/usr/include/qt5/QtSql -I/usr/include/qt5/QtSvg -I/usr/include/qt5/QtTest -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtXml -I/usr/include/qt5/QtDBus -I/usr/include/qt5/QtCore -Ilib/gtest-1.7.0/include -Ilib/fidlib -I/usr/include/taglib -Ilib/qtscript-bytearray -Ilib/reverb -Ilib/portaudio -Ilib/qm-dsp -Ilib/qm-dsp/include -I/usr/include/hidapi -I/usr/include/libusb-1.0 -Ilib/xwax -I/usr/include/opus -I/usr/include/libupower-glib -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include src/analyzer/trackanalysisscheduler.cpp
In file included from src/library/analysisfeature.h:16,
                 from src/library/library.h:18,
                 from src/analyzer/trackanalysisscheduler.cpp:3:
src/library/dlganalysis.h:11:10: schwerwiegender Fehler: library/ui_dlganalysis.h: Datei oder Verzeichnis nicht gefunden
 #include "library/ui_dlganalysis.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~
Kompilierung beendet.
scons: *** [lin64_build/src/analyzer/trackanalysisscheduler.o] Error 1
scons: building terminated because of errors.

The same problem occurs if I try to compile remotes/origin/2.2 as well...

Any ideas?

Revision history for this message
Be (be.ing) wrote :

That header file should be autogenerated by Qt's uic tool. This has come up for a few different people lately and it's not clear why. There may be a bug in the build system. Try explicitly specifying the qtdir argument for scons. Also try running "scons -c".

What distribution are you using?

Changed in mixxx:
status: New → Confirmed
Revision history for this message
Freier Radikaler (freier-radikaler) wrote :

I tried with scons -c and scons qtdir=/usr/lib64/qt5/
however the problem still remains. I wasn't able to find the mentioned header file "ui_dlganalysis.h" on the whole system using find even though I'm running a KDE. What KDE packet provides this header-file? Maybe I just didn't install it!?

Revision history for this message
Freier Radikaler (freier-radikaler) wrote :

I'm using Sabayon Linux which is a Gentoo derivative...

Revision history for this message
Freier Radikaler (freier-radikaler) wrote :

Sorry it seems that you meant "/usr/include/qt5".

But this dir is already chosen by scons:

user@horst ~/Mixxx # scons
scons: Reading SConscript files ...
INFO:root:Target Platform: linux
INFO:root:Target Machine: x86_64
INFO:root:Build: debug
INFO:root:Toolchain: gnu
INFO:root:Crosscompile: NO
INFO:root:Qt path: /usr/include/qt5
...

I would have an Qt4 handy as well but this doesn't seem to be supported by MIXXX anymore.

Revision history for this message
ronso0 (ronso0) wrote :

just to make sure: you updated all dependencies and qt before running scons?

Revision history for this message
Freier Radikaler (freier-radikaler) wrote :

I deleted all scons dbs and directories as well as upgrading my distribution to the most current version. Currently I'm using QTcore 5.11.3-r2.

Portage (the gentoo "apt-get") is able to compile mixxx-2.2.0 somehow. However I can't start it as it shows:
mixxx: error while loading shared libraries: libprotobuf-lite.so.8: cannot open shared object file: No such file or directory

This issue might be unrelated. So I tried to compile directly from the mixxx git repo but this shows the compiling issue above.

Revision history for this message
Freier Radikaler (freier-radikaler) wrote :

If this header file isn't generated automatically while the build process is taking place; is there a way to manually generate this header file?

Revision history for this message
Freier Radikaler (freier-radikaler) wrote :

Interesting: I just downgraded scons from 3.0.1-r100 to 2.5.1. Now the master branch just compiles fine and the programm executes just normal. Really strange. Seems to be a scons bug...

Revision history for this message
Uwe Klotz (uklotzde-deactivatedaccount) wrote :

It might also be a combination of SCons and the Python version. I once had a similar issue in Fedora 27 that required the installation of an older SCons version:
https://bugs.launchpad.net/mixxx/+bug/1732272

However in Fedora 29 the combination of Scons 3.0.1 with Python 2.7 works flawlessly:
$ scons -v
SCons by Steven Knight et al.:
 script: v3.0.1.74b2c53bc42290e911b334a6b44f187da698a668, 2017/11/14 13:16:53, by bdbaddog on hpmicrodog
 engine: v3.0.1.74b2c53bc42290e911b334a6b44f187da698a668, 2017/11/14 13:16:53, by bdbaddog on hpmicrodog
 engine path: ['/usr/lib/python2.7/site-packages/SCons']
Copyright (c) 2001 - 2017 The SCons Foundation

Revision history for this message
Be (be.ing) wrote :

Interestingly I noticed that Fedora's SCons 3 package uses /usr/bin/python2 as the interpreter rather than Python 3.

Revision history for this message
Freier Radikaler (freier-radikaler) wrote :

I'm also using python 2.7

Revision history for this message
Terry Belton (tezzy) wrote :

I am getting errors compiling Mixxx master on Opensuse Tumbleweed fresh install:

cat /usr/lib/os-release
NAME="openSUSE Tumbleweed"
# VERSION="20190318"
ID="opensuse-tumbleweed"
ID_LIKE="opensuse suse"
VERSION_ID="20190318"
PRETTY_NAME="openSUSE Tumbleweed"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:tumbleweed:20190318"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"

Python 2.7.15

SCons by Steven Knight et al.:
        script: v3.0.3, 2019-01-15 12:00:00, by abuild on lamb60
        engine: v3.0.3, 2019-01-15 12:00:00, by abuild on lamb60
        engine path: ['/usr/lib/python3.7/site-packages/SCons']

All dependencies met.

>scons -c
scons: Reading SConscript files ...
...
scons: done cleaning targets.

> scons qtdir=/usr/lib64/qt5 2>&1 | tee build.log
scons: Reading SConscript files ...
...
In file included from src/library/analysisfeature.h:16,
                 from src/library/library.h:18,
                 from src/analyzer/trackanalysisscheduler.cpp:3:
src/library/dlganalysis.h:11:10: fatal error: library/ui_dlganalysis.h: No such file or directory
 #include "library/ui_dlganalysis.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
scons: *** [lin64_build/src/analyzer/trackanalysisscheduler.o] Error 1
scons: building terminated because of errors.

> ls -R /ui_dlganalysis.h
ls: cannot access '/ui_dlganalysis.h': No such file or directory

> grep -iR "ui_dlganalysis.h"
src/library/dlganalysis.h:#include "library/ui_dlganalysis.h"

I have attached a compressed copy of the scons log.

Is there a missing file?

Revision history for this message
Freier Radikaler (freier-radikaler) wrote :

Try to use a scons version of 2.5.x. This worked for me...

summary: - Compile issues on master branch of MIXXX
+ Compile issues with scons 3.0.1
Changed in mixxx:
importance: Undecided → High
Revision history for this message
Uwe Klotz (uklotzde-deactivatedaccount) wrote : Re: Compile issues with scons 3.0.1

This is not an SCons, but a Python issue!

Fedora distributes two different Scons 3.0.x packages, namely python2-scons (SCons 3.0.x, Python 2.7) and python3-scons (Scons 3.0.x, Python 3.7). By explicitly invoking scons-2 or scons-3 you can switch between both version.

The build fails as described when using the Python 3 version, while the source files are generated correctly from the .ui files with the Python 2 version.

See also: https://bugzilla.rpmfusion.org/show_bug.cgi?id=5343

summary: - Compile issues with scons 3.0.1
+ Compile issues with SCons 3 / Python 3
Changed in mixxx:
milestone: none → 2.3.0
andy (andy-xyz)
Changed in mixxx:
assignee: nobody → andy (andy-xyz)
Revision history for this message
Uwe Klotz (uklotzde-deactivatedaccount) wrote :

See also: https://github.com/mixxxdj/mixxx/pull/2201

You need to delete lin64_build/, .sconf_temp/ and .sconsign.dblite for a clean build to verify that the bug is actually solved.

Revision history for this message
Uwe Klotz (uklotzde-deactivatedaccount) wrote :

Looks like Jan was able to fix this bug!!

Changed in mixxx:
assignee: andy (andy-xyz) → Jan Holthuis (holthuis-jan)
status: Confirmed → In Progress
Changed in mixxx:
status: In Progress → Fix Committed
Changed in mixxx:
status: Fix Committed → Fix Released
Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/9603

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.