Closed juozaspo closed 3 years ago
The portsmf package in Ubuntu is too old. You need to uninstall it to build Tenacity or explicitly specify -D MIDI=OFF
to the CMake configure step. I see that it is included in the package list in BUILDING.md by mistake. Would you like to fix that?
If you want to enable MIDI on Ubuntu, for now you need to build PortSMF yourself.
A wxWidgets 3.1 Linux build made by CodeLite team were installed from their repository provided for Ubuntu distributions, with a link provided by the wxWidgets download page.
I tested this but it does not work which is why it is not mentioned in BUILDING.md. I recommend uninstalling that package, removing the PPA, and building wxWidgets 3.1.5 from source. I suppose we could explicitly specify in BUILDING.md to not use that PPA. Would you like to add that?
The portsmf package in Ubuntu is too old. You need to uninstall it to build Tenacity or explicitly specify
-D MIDI=OFF
to the CMake configure step. I see that it is included in the package list in BUILDING.md by mistake. Would you like to fix that?
I can't simply remove portsmf library as it is used by older Audacity version supplied by ubuntu. Though I might build a separate copy and point cmake to that location and see if it works.
A wxWidgets 3.1 Linux build made by CodeLite team were installed from their repository provided for Ubuntu distributions, with a link provided by the wxWidgets download page.
I tested this but it does not work which is why it is not mentioned in BUILDING.md. I recommend uninstalling that package, removing the PPA, and building wxWidgets 3.1.5 from source. I suppose we could explicitly specify in BUILDING.md to not use that PPA. Would you like to add that?
I'll uninstall the version coming from the repository also removing the repository then I'll try to build it from source and see if it works.
I can't simply remove portsmf library as it is used by older Audacity version supplied by ubuntu. Though I might build a separate copy and point cmake to that location and see if it works.
That could work. If you don't use the MIDI features, the easy way would be to specify -D MIDI=OFF
to CMake.
For now I've built PortSMF and will see if compiles (first I'll have to build and reinstall wxWidgets). Though I'll have to remove .ccache
first before doing that. The cmake command is as follows:
cmake -G Ninja -S . -B build -DPortSMF_LIBRARY=/home/juozas/tenacitylibs/lib/libportSMF.so -DPortSMF_INCLUDE_DIR=/home/juozas/tenacitylibs/include/portsmf
I don't install the portsmf globally as I only want to test it locally w/o overwriting already installed copy and causing further conflicts or other bugs.
You shouldn't need to specify the absolute paths for the library and include directory individually. -D CMAKE_PREFIX_PATH=/home/juozas/tenacitylibs
should be sufficient.
Also, ccache is really good at not messing up your builds. I have never once had a problem fixed by deleting ~/.ccache.
Fails building with libsbsms-dev
(2.0.2-2build1) installed:
[549/747] Building CXX object src/CMakeFiles/Tenacity.dir/effects/SBSMSEffect.cpp.o
FAILED: src/CMakeFiles/Tenacity.dir/effects/SBSMSEffect.cpp.o
/usr/bin/ccache /usr/bin/c++ -DAUDACITY_DLL_API="" -DBUILDING_AUDACITY -DCMAKE -DEXPERIMENTAL_DRAGGABLE_PLAY_HEAD -DEXPERIMENTAL_EASY_CHANGE_KEY_BINDINGS -DEXPERIMENTAL_EFFECT_MANAGEMENT -DEXPERIMENTAL_FULL_WASAPI -DEXPERIMENTAL_HALF_WAVE -DEXPERIMENTAL_KEY_VIEW -DEXPERIMENTAL_MODULE_PREFS -DEXPERIMENTAL_NOISE_REDUCTION -DEXPERIMENTAL_NOTETRACK_OVERLAY -DEXPERIMENTAL_NYQUIST_SPLIT_CONTROL -DEXPERIMENTAL_PUNCH_AND_ROLL -DEXPERIMENTAL_REALTIME_AUDACITY_EFFECTS -DEXPERIMENTAL_SCIENCE_FILTERS -DEXPERIMENTAL_SCROLLING_LIMITS -DEXPERIMENTAL_SCRUBBING_SCROLL_WHEEL -DEXPERIMENTAL_SCRUBBING_SUPPORT -DEXPERIMENTAL_SPECTRAL_EDITING -DEXPERIMENTAL_SYNC_LOCK -DEXPERIMENTAL_THEMING -DEXPERIMENTAL_TWO_TONE_TIME_RULER -DEXPERIMENTAL_ZERO_PADDED_SPECTROGRAMS -DEXPERIMENTAL_ZOOM_TOGGLE_BUTTON -DHAVE_LRINT -DHAVE_LRINTF -DHAVE_MLOCK -DSTRINGS_API="" -DSTRING_UTILS_API="" -DTenacity_EXPORTS -DUTILITY_API="" -DWXUSINGDLL -D_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING=1 -D_SILENCE_CXX17_NEGATORS_DEPRECATION_WARNING=1 -D__WXGTK3__ -D__WXGTK__ -Isrc/private -I../include -I../src -I../lib-src/libnyquist/. -I../libraries/lib-string-utils -I../libraries/lib-strings -I../libraries/lib-utility -isystem /usr/local/lib/wx/include/gtk3-unicode-3.1 -isystem /usr/local/include/wx-3.1 -isystem /usr/include/lilv-0 -isystem /usr/include/suil-0 -isystem /home/juozas/tenacitylibs/include -isystem /usr/include/gtk-3.0 -isystem /usr/include/at-spi2-atk/2.0 -isystem /usr/include/at-spi-2.0 -isystem /usr/include/dbus-1.0 -isystem /usr/lib/x86_64-linux-gnu/dbus-1.0/include -isystem /usr/include/gio-unix-2.0 -isystem /usr/include/cairo -isystem /usr/include/pango-1.0 -isystem /usr/include/fribidi -isystem /usr/include/harfbuzz -isystem /usr/include/atk-1.0 -isystem /usr/include/pixman-1 -isystem /usr/include/uuid -isystem /usr/include/freetype2 -isystem /usr/include/libpng16 -isystem /usr/include/gdk-pixbuf-2.0 -isystem /usr/include/libmount -isystem /usr/include/blkid -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -g -include /home/juozas/tenacity/build/src/private/configunix.h -DAUDACITY_VERSION=2 -DAUDACITY_RELEASE=4 -DAUDACITY_REVISION=1 -DAUDACITY_MODLEVEL=0 -DAUDACITY_VERSION_STRING=L\"Audacity-2.4.1-1822-g13914c5\" -DAUDACITY_FILE_VERSION=L\"2,4,1,0\" -DPROHIBITED==delete -Dsafenew=new -DWXINTL_NO_GETTEXT_MACRO -D_DEBUG=1 -DIS_ALPHA -DUSE_ALPHA_MANUAL -pthread -std=gnu++17 -MD -MT src/CMakeFiles/Tenacity.dir/effects/SBSMSEffect.cpp.o -MF src/CMakeFiles/Tenacity.dir/effects/SBSMSEffect.cpp.o.d -o src/CMakeFiles/Tenacity.dir/effects/SBSMSEffect.cpp.o -c ../src/effects/SBSMSEffect.cpp
../src/effects/SBSMSEffect.cpp: In static member function ‘static double EffectSBSMS::getInvertedStretchedTime(double, double, _sbsms_::SlideType, double)’:
../src/effects/SBSMSEffect.cpp:203:17: error: ‘class _sbsms_::Slide’ has no member named ‘getInverseStretchedTime’; did you mean ‘getStretchedTime’?
203 | return slide.getInverseStretchedTime(outputTime);
| ^~~~~~~~~~~~~~~~~~~~~~~
| getStretchedTime
Probably broken/outdated. Will remove that then try again.
Finally was able to build using forked PortSMP and local build of wxWidgets, excluding installation of libsbsms, as it's broken. The program currently runs fine. There're some ui bugs but I might create a separate issue for them later. Also there's message shown in terminal upon hovering over some menu items shown in open menus, probably related to gtk or something similar as google shows many results with similar errors in different software.
*** BUG ***
In pixman_region32_init_rect: Invalid rectangle passed
Set a breakpoint on '_pixman_log_error' to debug
Great. Could you open a pull request to remove portsmf from the Ubuntu package list in BUILDING.md?
I just sent an email to the Debian multimedia packagers list about updating Tenacity's dependencies, so hopefully someone will take care of the broken portsmf and libsbsms packages.
Will make a new pr soon, first I'll have to make a fork and make modifications and save them to new branch.
Guidelines
Version/Commit hash
13914c5125da4eab6f8ca68bddd5fdab71e30683
Describe the bug.
Trying to build tenacity on Ubuntu Linux 20.04 LTS fails with error while compiling
src/tracks/playabletrack/notetrack/ui/StretchHandle.cpp
:Expected behavior
No error while compiling above file.
OS
Ubuntu 20.04 LTS
Additional context
All dependencies shown in
BUILDING.md
were installed, excludinglibjack-dev
as it would try to removelibjack-jackd2-dev
and other packages related to as it that were used by other software, also removing any software depending on it. ~A wxWidgets 3.1 Linux build made by CodeLite team were installed from their repository provided for Ubuntu distributions, with a link provided by the wxWidgets download page.~ The builds coming from this repository were known to not work, as shown in comments, so later I've built it from source and installed to default location. ~Also after I've installed all wxWidget packages cmake still would not detect wxWidgets unless/usr/bin/egrep
were symlinked to/bin/egrep
and/usr/bin/grep
to/bin/grep
, probably caused by a some obscure bug.~ This bug was present in the package coming from the mentioned repository. After removing the extra symlinks cmake would detect correct location of egrep w/o need to add the symlink and after reinstalling wxWidgets the compilation should work. Also I could not find any newer version oflibportsmf-dev
anywhere in ubuntu PPAs, doubt there's any updated version, even Debian's version is old/out of date, also If there's a workaround for a bug in this package I'd like to know a solution. Also deleting.ccache
from home directory wouldn't help at all. Still fails when compiling the above file. Full build log with error: failure.txtThis issue is not a duplicate