f2e-spec icon indicating copy to clipboard operation
f2e-spec copied to clipboard

Make Performous available in Flathub

Open Peque opened this issue 2 years ago • 35 comments

Do you want to request a feature or report a bug?

Feature

What did you expect to see?

Flatpak is a great way to distribute software and make it available in many distributions. Flathub is probably the best place to upload it to. :blush:

Peque avatar Sep 21 '21 17:09 Peque

What does Flathub offer what isn't already covered by deb, rpm or nsis package?

I think we also had a request to create snap packages. which in the end was also turned down i think.

Also there's currently an open PR to create AppImages, 'just another flathub/snap system' > https://github.com/performous/performous/pull/642

Baklap4 avatar Sep 21 '21 17:09 Baklap4

@Baklap4 Flatpaks can run on any distro that has the flatpak package installed and most distro’s software centers have added the Flathub remote. So basically, build once, deploy everywhere.

Compared to AppImages, Flatpak can use shared libraries provided in other Flatpaks. Also, Flatpaks sandboxes itself and has Android-like permission controls toggles.

An updated reading that summarizes differences: https://bytexd.com/differences-between-snap-appimage-and-flatpak/

Peque avatar Sep 22 '21 22:09 Peque

I think it is a good idea to have a look at those package formats and to evaluate if they could be supported. But this would not be the top priority IMO.

twollgam avatar Sep 23 '21 15:09 twollgam

I found this interesting: where the desktop might be moving forward in Linux (a summary about Flatpak, Silverblue/OSTree, Wayland, Pipewire...).

Peque avatar Sep 25 '21 12:09 Peque

With Github actions we're making a lot of progress on producing artifacts. Maybe flatpak and other formats such as snap will be supported in the near future. Any tooling (github-actions / api calls) which can help us automate a deploy to those places @peque ?

Seems i found an action which provides this: https://github.com/marketplace/actions/flatpak-builder

Baklap4 avatar Apr 25 '22 17:04 Baklap4

With #736 merged we now support AppImages

Baklap4 avatar Apr 25 '22 20:04 Baklap4

@Baklap4 Great news! :blush:

I think the best way to distribute Performous as a Flatpak is through Flathub:

https://github.com/flathub/flathub/wiki/App-Submission

Peque avatar Apr 25 '22 21:04 Peque

Yes we'll give a look into it, would be nice to support especially with the mentioned GH-Action.

Baklap4 avatar Apr 26 '22 06:04 Baklap4

Currently @ooshlablu is trying to get a flatpak working. Let's see where this is going

Latest messages regarding this:

I (@ooshlablu) looked into flatpacks a bit. It might take me a while. It's a little different than both containers and AppImages where they provide core frameworks and things that you build you project on within the pack instead of you creating an env with whatever you need. Their docs are also not the best right now

@ooshlablu please link this issue when a PR is upcoming :)

Baklap4 avatar Apr 29 '22 13:04 Baklap4

@Peque I made a small attempt to get Flatpak working. Results can be found here: https://github.com/Baklap4/performous/blob/feature/Flatpak/org.Performous.Performous.yml

The workflow i've added now builts a couple of dependencies and then tries to build performous (which fails for now)

However i'm kind of worried about all the dependencies we have and how we need to instruct flatpak to build/setup everything. This is going to be a very long build (presumably about 4 hours) for just 1 Flatpak version as it has to build all of our dependencies. I was wondering if it's possible to setup our own flatpak base runtime in which we pre-install all those dependencies?

And also once this built is completed i'm quite worried about the maintainability of our deps. As for each update of a dependency we might have to change something in our flatpak yaml file..

Do you happen to know we're on the right track like this? or are we missing the boat here?

Baklap4 avatar May 08 '22 17:05 Baklap4

@Baklap4 Thanks for sharing! :blush:

I think that is the way to go (Flatpak tries to avoid relying on specific package builds from distros). Once it is built once, I think you could upload the manifest so that Flathub takes care of any future builds.

On a side note, have you considered using a C++ package manager like Conan? It could be a good way to manage all dependencies in a way that it is not dependent on the developer's preferred distribution. It could then be used for Flatpak, Snap and even local development. Note: just thinking out-loud, I don't know the difficulties of what I am proposing in the context of this project, I just got used to manage dependencies that way with Python (pip) and JS (npm), which are the languages that I work with. :smile:

Peque avatar May 08 '22 19:05 Peque

I think that is the way to go (Flatpak tries to avoid relying on specific package builds from distros). Once it is built once, I think you could upload the manifest so that Flathub takes care of any future builds.

Nah they'll add us as a contributor to a specific repository. Then we can maintain it there.

Almost got every dependency listed + build + installed, a couple left to go...

On a side note, have you considered using a C++ package manager like Conan? It could be a good way to manage all dependencies in a way that it is not dependent on the developer's preferred distribution

We haven't. As most of us are familiar with the package manager for their OS. We mainly use: apt-get (debian based), dnf (fedora) and vcpkg (Windows)

Conan looks nice but i'm kind of wondering if all packages we use are listed (probably but unsure atm) and at their proper versions..

Baklap4 avatar May 08 '22 20:05 Baklap4

Almost got every dependency listed + build + installed, a couple left to go...

:rocket: :rocket:

We mainly use: apt-get (debian based), dnf (fedora) and vcpkg (Windows)

Oh, if you are already using vcpkg then that could be used too! For what I know it is multiplatform and serves for the same purpose as Conan. :blush:

The only downsides I see when compared to Conan is their default telemetry collection and maybe the fact that it seems you cannot use a specific version of a dependency (?). Also, I have read (maybe outdated) potential issues with CMake projects. :shrug:

Even if you are familiar with your OS's package manager, I think it is a great way of unifying the way builds are done: independently of any distribution, applicable to CI/DC builds too, to Docker images, to Flatpak/Snap... Instead of maintaining multiple dependency lists in multiple files or documentation pages, you only need one. (Here again, talking without really knowing about these package managers for C++, so I may be wrong :joy: )

Peque avatar May 08 '22 21:05 Peque

What does Flathub offer what isn't already covered by deb, rpm or nsis package?

I think we also had a request to create snap packages. which in the end was also turned down i think.

Also there's currently an open PR to create AppImages, 'just another flathub/snap system' > #642

DEB packages for Performous don't install on Debian, the native distro for DEB files. They might not install on other Debian derived distros except Ubuntu. Same might happen with Fedora.

Also, you need to maintain packages for every Ubuntu and Fedora version that is released.

berarma avatar Oct 24 '22 14:10 berarma

I'm very interested in getting this to work and eventually into Flathub. Anything I could do to help?

abompard avatar Aug 27 '23 15:08 abompard

@abompard If you have any experience in building flatpacks you could definitely give it a try. I think part of the problem in getting this rolling is that I don't think any of the current developers even use flatpacks at all (I'm a Linux guy, and I don't. I prefer Appimages), so building them is something completely new for us. That and the lack of time that most of us have at the moment. We are more than happy to accept PRs, so if you think you can contribute then go for it. Also, if you don't have any experience in building flatpack, tell your friends that do. We will accept their PRs also :-)

ooshlablu avatar Aug 27 '23 15:08 ooshlablu

Agreed with @ooshlablu we're certainly interested in other artifacts, but we mostly won't use it. Therefore we don't have added it yet. If a PR is made to create the flatpack we'd be more than welcome to add it in :) the more users who can play the better :D

Though if something needs updating or stuff we'll have to know how to do that... so a little explanation and such would be nice aswell 👍

Baklap4 avatar Aug 28 '23 09:08 Baklap4

Cool! I have made a grand total of one Flatpak yet, but I've learned a lot during its submission to Flathub and I'm happy to try to get one for Performous working. I may have minor patches to add to Performous, such as @Baklap4 's improvement of the FindCed.cmake file. I'll open PRs if needed.

abompard avatar Aug 28 '23 09:08 abompard

OK, It's building, but crashdumping on start. When I run in strace I get this:

stderr/info: /usr/include/c++/12.2.0/bits/stl_vector.h:1123: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](size_type) [with _Tp = unsigned char; _Alloc = std::allocator<unsigned char>; reference = unsigned char&; size_type = long unsigned int]: Assertion '__n < this->size()' failed.

I'm unfortunately unfamiliar with c++, any idea how this could be fixed?

abompard avatar Aug 30 '23 08:08 abompard

@abompard i think we might be accessing something which might not be allocated yet searching the error on google results in a couple of things but we might need a better stacktrace

Can you run with a debugger (gdb for instance) and give us a backtrace? This will help us locate the specific line in question

EDIT: Also feel free to create a draft PR, with some instructions how to execute the build and produce the artifact. This way we can help searching by retracing your steps :)

EDIT2: How to run gdb ->

<compile your executable>
gdb ./performous # you get dropped into a shell
run # star the run operation, wait for crash
bt # print out the backtrace

Baklap4 avatar Aug 30 '23 08:08 Baklap4

Huh, my traceback is pretty empty:

Thread 1 "performous" received signal SIGABRT, Aborted.
0x00007ffff4c91204 in __pthread_kill_implementation () from /usr/lib/x86_64-linux-gnu/libc.so.6
(gdb) bt
#0  0x00007ffff4c91204 in __pthread_kill_implementation () at /usr/lib/x86_64-linux-gnu/libc.so.6
#1  0x00007ffff4c3f04e in raise () at /usr/lib/x86_64-linux-gnu/libc.so.6
#2  0x00007ffff4c287fc in abort () at /usr/lib/x86_64-linux-gnu/libc.so.6
#3  0x00007ffff50e1f9d in  () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007ffff7ec3a5f in  () at /app/lib/libboost_locale.so.1.79.0
#5  0x00007ffff7ec3d13 in  () at /app/lib/libboost_locale.so.1.79.0
#6  0x000055555560c705 in  ()
#7  0x0000555555616da7 in  ()
#8  0x0000555555619083 in  ()
#9  0x00005555556196d8 in  ()
#10 0x000055555561961c in  ()
#11 0x000055555561961c in  ()
#12 0x000055555561961c in  ()
#13 0x000055555561961c in  ()
#14 0x000055555561961c in  ()
#15 0x000055555561961c in  ()
#16 0x000055555561961c in  ()
#17 0x000055555561961c in  ()
#18 0x000055555561961c in  ()
#19 0x000055555561961c in  ()
#20 0x000055555561961c in  ()
#21 0x000055555561961c in  ()
#22 0x000055555561961c in  ()
#23 0x000055555561961c in  ()
#24 0x00005555556199ff in  ()
#25 0x000055555561a0c8 in  ()
#26 0x0000555555651ca6 in  ()
#27 0x0000555555652d37 in  ()
#28 0x00005555556541d5 in  ()
#29 0x000055555564bc33 in  ()
#30 0x0000555555673bf2 in  ()
#31 0x00005555556a77b7 in  ()
#32 0x00005555555f0a47 in  ()
#33 0x00007ffff4c2958a in __libc_start_call_main () at /usr/lib/x86_64-linux-gnu/libc.so.6
#34 0x00007ffff4c2964b in __libc_start_main () at /usr/lib/x86_64-linux-gnu/libc.so.6
#35 0x00005555555f4b45 in  ()

I'm probably missing something. I'll open PRs, thanks!

Do you know if I should I use the official version of aubio or Performous' fork?

abompard avatar Aug 30 '23 09:08 abompard

Hmm that might be if the executable is not compiled with debug symbols (CMAKE_RELEASE_TYPE=Debug) i think our default target is RelWithDeb (is listed in the mains CMakeLists.txt)

As for aubio, please don't install it on your system, but let cmake fetch it for you and make it available (default if it's not available on the system)

Baklap4 avatar Aug 30 '23 09:08 Baklap4

Flatpaks can't access the network at build-time, but I can pre-download it and make it available in the Performous source directory. Where should the directory be? In "aubio-src"?

abompard avatar Aug 30 '23 09:08 abompard

Ah, I got a good backtrace this time!

#0  0x00007ffff4c91204 in __pthread_kill_implementation () at /usr/lib/x86_64-linux-gnu/libc.so.6
#1  0x00007ffff4c3f04e in raise () at /usr/lib/x86_64-linux-gnu/libc.so.6
#2  0x00007ffff4c287fc in abort () at /usr/lib/x86_64-linux-gnu/libc.so.6
#3  0x00007ffff50e1f9d in  () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007ffff7ec3a5f in std::vector<unsigned char, std::allocator<unsigned char> >::operator[](unsigned long) (this=0x7fffffffaec0, __n=0) at /usr/include/c++/12.2.0/bits/stl_vector.h:1121
#5  std::vector<unsigned char, std::allocator<unsigned char> >::operator[](unsigned long) (__n=<optimized out>, this=<optimized out>) at /usr/include/c++/12.2.0/bits/stl_vector.h:1121
#6  boost::locale::impl_icu::collate_impl<char>::do_basic_transform(boost::locale::collator_base::level_type, char const*, char const*) const (this=<optimized out>, level=level@entry=boost::locale::collator_base::identical, b=0x7fffffffafa0 "\200", e=0x7fffffffafa1 "")
    at libs/locale/src/icu/collator.cpp:96
#7  0x00007ffff7ec3d13 in boost::locale::impl_icu::collate_impl<char>::do_transform[abi:cxx11](boost::locale::collator_base::level_type, char const*, char const*) const (e=<optimized out>, b=<optimized out>, level=boost::locale::collator_base::identical, this=<optimized out>)
    at libs/locale/src/icu/collator.cpp:107
#8  boost::locale::collator<char>::do_transform[abi:cxx11](char const*, char const*) const (this=<optimized out>, b=<optimized out>, e=<optimized out>) at ./boost/locale/collator.hpp:175
#9  0x0000555555603489 in std::__cxx11::collate<char>::transform(char const*, char const*) const (__hi=<optimized out>, __lo=<optimized out>, this=0x555555a9a630) at /usr/include/c++/12.2.0/bits/locale_classes.h:726
#10 std::__cxx11::regex_traits<char>::transform<char*>(char*, char*) const (__last=0x555556707ee1 "\031%\003PU", __first=0x555556707ee0 "\200\031%\003PU", this=<optimized out>) at /usr/include/c++/12.2.0/bits/regex.h:240
#11 std::__cxx11::regex_traits<char>::transform_primary<char const*>(char const*, char const*) const (__last=<optimized out>, __first=<optimized out>, this=<optimized out>) at /usr/include/c++/12.2.0/bits/regex.h:271
#12 std::__detail::_BracketMatcher<std::__cxx11::regex_traits<char>, false, false>::_M_apply(char, std::integral_constant<bool, false>) const::{lambda()#1}::operator()() const (__closure=<optimized out>) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:609
#13 std::__detail::_BracketMatcher<std::__cxx11::regex_traits<char>, false, false>::_M_apply(char, std::integral_constant<bool, false>) const (__ch=-128 '\200', this=0x7fffffffb050) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:617
#14 std::__detail::_BracketMatcher<std::__cxx11::regex_traits<char>, false, false>::_M_make_cache(std::integral_constant<bool, true>) (this=0x7fffffffb050) at /usr/include/c++/12.2.0/bits/regex_compiler.h:544
#15 std::__detail::_BracketMatcher<std::__cxx11::regex_traits<char>, false, false>::_M_ready() (this=this@entry=0x7fffffffb050) at /usr/include/c++/12.2.0/bits/regex_compiler.h:515
#16 0x000055555560a727 in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_insert_bracket_matcher<false, false>(bool) (this=this@entry=0x7fffffffbec0, __neg=<optimized out>) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:423
#17 0x000055555560d485 in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_bracket_expression() (this=this@entry=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:350
#18 0x000055555560d582 in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_atom() (this=this@entry=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:336
#19 0x000055555560e0b8 in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_term() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:133
#20 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:115
#21 0x000055555560dffc in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:118
#22 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:112
#23 0x000055555560dffc in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:118
#24 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:112
#25 0x000055555560dffc in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:118
#26 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:112
#27 0x000055555560dffc in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:118
#28 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:112
#29 0x000055555560dffc in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:118
#30 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:112
#31 0x000055555560dffc in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:118
#32 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:112
#33 0x000055555560dffc in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:118
#34 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:112
#35 0x000055555560dffc in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:118
#36 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:112
#37 0x000055555560dffc in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:118
#38 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:112
#39 0x000055555560dffc in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:118
#40 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:112
#41 0x000055555560dffc in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:118
#42 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:112
#43 0x000055555560dffc in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:118
#44 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:112
#45 0x000055555560dffc in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:118
#46 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:112
#47 0x000055555560dffc in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:118
#48 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_alternative() (this=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:112
#49 0x000055555560e317 in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_disjunction() (this=this@entry=0x7fffffffbec0) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:91
#50 0x000055555560e8a7 in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_Compiler(char const*, char const*, std::locale const&, std::regex_constants::syntax_option_type)
    (this=0x7fffffffbec0, __b=<optimized out>, __e=<optimized out>, __loc=<optimized out>, __flags=<optimized out>) at /usr/include/c++/12.2.0/bits/regex_compiler.tcc:76
#51 0x000055555563f916 in std::__cxx11::basic_regex<char, std::__cxx11::regex_traits<char> >::_M_compile(char const*, char const*, std::regex_constants::syntax_option_type)
    (__f=std::regex_constants::_S_ECMAScript, __last=<optimized out>, __first=<optimized out>, this=0x7fffffffbe60) at /usr/include/c++/12.2.0/bits/regex.h:789
#52 std::__cxx11::basic_regex<char, std::__cxx11::regex_traits<char> >::assign<std::char_traits<char>, std::allocator<char> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::regex_constants::syntax_option_type)
    (__flags=std::regex_constants::_S_ECMAScript, __s=<optimized out>, this=0x7fffffffbe60) at /usr/include/c++/12.2.0/bits/regex.h:662
#53 std::__cxx11::basic_regex<char, std::__cxx11::regex_traits<char> >::operator=<std::char_traits<char>, std::allocator<char> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
    (__s="Harmonix Drum [Kk]it for PlayStation", this=0x7fffffffbe60) at /usr/include/c++/12.2.0/bits/regex.h:583
#54 input::Controllers::Impl::parseControllers(xmlpp::DomParser const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, input::SourceType)
     (this=this@entry=0x555555c22cd0, dom=..., path="/controllers/joystick/controller", sourceType=sourceType@entry=input::SourceType::JOYSTICK) at /run/build/Performous/game/controllers.cc:197
#55 0x000055555564050c in input::Controllers::Impl::readControllers(std::filesystem::__cxx11::path const&) (this=0x555555c22cd0, file=filesystem::path "/app/share/games/performous/config/controllers.xml" = {...}) at /run/build/Performous/game/controllers.cc:160
#56 0x0000555555641506 in input::Controllers::Impl::Impl() (this=0x555555c22cd0) at /usr/include/c++/12.2.0/bits/fs_path.h:594
#57 0x0000555555639f93 in input::Controllers::Controllers() (this=this@entry=0x7fffffffcce0) at /run/build/Performous/game/controllers.cc:405
#58 0x000055555565d1e2 in Game::Game(Window&, Audio&, TranslationEngine&) (this=this@entry=0x7fffffffccd0, _window=..., _audio=..., _translationEngine=...) at /run/build/Performous/game/game.cc:20
#59 0x000055555568c868 in mainLoop(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (songlist=<optimized out>) at /usr/include/c++/12.2.0/bits/unique_ptr.h:445
#60 0x00005555555e667b in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /run/build/Performous/game/main.cc:392

abompard avatar Aug 30 '23 10:08 abompard

It looks like Boost is involved, so FYI I'm compiling with Boost 1.79.0. I'll try with the latest, 1.83.0.

abompard avatar Aug 30 '23 10:08 abompard

~~Hmm i see Boost and Regex.. might be the same as fedora built-system a while ago. Can you try setting the cmake-flag -DUSE_BOOST_REGEX=1 with your build? See~~ https://github.com/performous/performous/issues/567 we've moved away from boost-regex.. we should be using std::regex everywhere now.. hmm

Baklap4 avatar Aug 30 '23 10:08 Baklap4

I tried to build it with -DUSE_BOOST_REGEX=1 and it does start up fine!

abompard avatar Aug 30 '23 12:08 abompard

Hey folks, I'm trying to build version 1.3.0 in the Flatpak, and I get a linking error that you may be able to debug much faster than me:

cd /run/build/Performous/_flatpak_build/game && /usr/bin/cmake -E cmake_link_script CMakeFiles/performous.dir/link.txt --verbose=1
/run/ccache/bin/c++ -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -O3 -DNDEBUG -L/app/lib -Wl,-z,relro,-z,now -Wl,--as-needed CMakeFiles/performous.dir/3dobject.cc.o CMakeFiles/performous.dir/analyzer.cc.o CMakeFiles/performous.dir/audio.cc.o CMakeFiles/performous.dir/backgrounds.cc.o CMakeFiles/performous.dir/cache.cc.o CMakeFiles/performous.dir/color.cc.o CMakeFiles/performous.dir/configitem.cc.o CMakeFiles/performous.dir/configuration.cc.o "CMakeFiles/performous.dir/controllers-joystick.cc.o" "CMakeFiles/performous.dir/controllers-keyboard.cc.o" "CMakeFiles/performous.dir/controllers-midi.cc.o" CMakeFiles/performous.dir/controllers.cc.o CMakeFiles/performous.dir/dancegraph.cc.o CMakeFiles/performous.dir/database.cc.o CMakeFiles/performous.dir/dialog.cc.o CMakeFiles/performous.dir/dynamicnotegraphscaler.cc.o CMakeFiles/performous.dir/engine.cc.o CMakeFiles/performous.dir/execname.cc.o CMakeFiles/performous.dir/ffmpeg.cc.o CMakeFiles/performous.dir/fixednotegraphscaler.cc.o CMakeFiles/performous.dir/game.cc.o CMakeFiles/performous.dir/glshader.cc.o CMakeFiles/performous.dir/glutil.cc.o CMakeFiles/performous.dir/graphic/color_trans.cc.o CMakeFiles/performous.dir/graphic/lyrics_color_trans.cc.o CMakeFiles/performous.dir/graphic/shader_manager.cc.o CMakeFiles/performous.dir/graphic/size.cc.o CMakeFiles/performous.dir/graphic/text_renderer.cc.o CMakeFiles/performous.dir/graphic/transform.cc.o CMakeFiles/performous.dir/graphic/video_driver.cc.o CMakeFiles/performous.dir/graphic/view_trans.cc.o CMakeFiles/performous.dir/graphic/window.cc.o CMakeFiles/performous.dir/guitargraph.cc.o CMakeFiles/performous.dir/hiscore.cc.o CMakeFiles/performous.dir/i18n.cc.o CMakeFiles/performous.dir/image.cc.o CMakeFiles/performous.dir/instrumentgraph.cc.o CMakeFiles/performous.dir/json.cc.o CMakeFiles/performous.dir/layout_singer.cc.o CMakeFiles/performous.dir/log.cc.o CMakeFiles/performous.dir/main.cc.o CMakeFiles/performous.dir/menu.cc.o CMakeFiles/performous.dir/midifile.cc.o CMakeFiles/performous.dir/musicalscale.cc.o CMakeFiles/performous.dir/notegraph.cc.o CMakeFiles/performous.dir/notegraphscalerfactory.cc.o CMakeFiles/performous.dir/notes.cc.o CMakeFiles/performous.dir/opengl_text.cc.o CMakeFiles/performous.dir/platform.cc.o CMakeFiles/performous.dir/player.cc.o CMakeFiles/performous.dir/players.cc.o CMakeFiles/performous.dir/playlist.cc.o CMakeFiles/performous.dir/progressbar.cc.o CMakeFiles/performous.dir/requesthandler.cc.o CMakeFiles/performous.dir/scorewindow.cc.o CMakeFiles/performous.dir/screen_audiodevices.cc.o CMakeFiles/performous.dir/screen_intro.cc.o CMakeFiles/performous.dir/screen_paths.cc.o CMakeFiles/performous.dir/screen_players.cc.o CMakeFiles/performous.dir/screen_playlist.cc.o CMakeFiles/performous.dir/screen_practice.cc.o CMakeFiles/performous.dir/screen_sing.cc.o CMakeFiles/performous.dir/screen_songs.cc.o CMakeFiles/performous.dir/song.cc.o CMakeFiles/performous.dir/songitems.cc.o CMakeFiles/performous.dir/songorder/artist_song_order.cc.o CMakeFiles/performous.dir/songorder/creator_song_order.cc.o CMakeFiles/performous.dir/songorder/edition_song_order.cc.o CMakeFiles/performous.dir/songorder/file_time_song_order.cc.o CMakeFiles/performous.dir/songorder/genre_song_order.cc.o CMakeFiles/performous.dir/songorder/language_song_order.cc.o CMakeFiles/performous.dir/songorder/most_sung_song_order.cc.o CMakeFiles/performous.dir/songorder/name_song_order.cc.o CMakeFiles/performous.dir/songorder/path_song_order.cc.o CMakeFiles/performous.dir/songorder/random_song_order.cc.o CMakeFiles/performous.dir/songorder/score_song_order.cc.o "CMakeFiles/performous.dir/songparser-ini.cc.o" "CMakeFiles/performous.dir/songparser-mid.cc.o" "CMakeFiles/performous.dir/songparser-sm.cc.o" "CMakeFiles/performous.dir/songparser-txt.cc.o" "CMakeFiles/performous.dir/songparser-xml.cc.o" CMakeFiles/performous.dir/songparser.cc.o CMakeFiles/performous.dir/songs.cc.o CMakeFiles/performous.dir/svg.cc.o CMakeFiles/performous.dir/texture.cc.o CMakeFiles/performous.dir/theme.cc.o CMakeFiles/performous.dir/tone.cc.o CMakeFiles/performous.dir/unicode.cc.o CMakeFiles/performous.dir/util.cc.o CMakeFiles/performous.dir/video.cc.o CMakeFiles/performous.dir/webcam.cc.o CMakeFiles/performous.dir/webserver.cc.o -o ../performous  /app/lib/libboost_program_options.so.1.79.0 /app/lib/libboost_iostreams.so.1.79.0 /app/lib/libboost_locale.so.1.79.0 /usr/lib/x86_64-linux-gnu/libicuuc.so /usr/lib/x86_64-linux-gnu/libicudata.so /usr/lib/x86_64-linux-gnu/libicui18n.so /usr/lib/x86_64-linux-gnu/libicuio.so /usr/lib/x86_64-linux-gnu/libepoxy.so /usr/lib/x86_64-linux-gnu/libSDL2main.a /usr/lib/x86_64-linux-gnu/librsvg-2.so /usr/lib/x86_64-linux-gnu/libcairo.so /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so /app/lib/libxml++-5.0.so /usr/lib/x86_64-linux-gnu/libxml2.so /app/lib/libglibmm-2.68.so /app/lib/libsigc-3.0.so /usr/lib/x86_64-linux-gnu/libavformat.so /usr/lib/x86_64-linux-gnu/libavcodec.so /usr/lib/x86_64-linux-gnu/libavutil.so /usr/lib/x86_64-linux-gnu/libswresample.so /usr/lib/x86_64-linux-gnu/libavutil.so /usr/lib/x86_64-linux-gnu/libswscale.so /usr/lib/x86_64-linux-gnu/libavutil.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/x86_64-linux-gnu/libz.so /app/lib/libportaudio.so /usr/lib/x86_64-linux-gnu/libfontconfig.so /app/lib/libfmt.a /app/lib/libopencv_videoio.so.4.8.0 /app/lib/libcpprest.so.2.10 /app/lib/libboost_chrono.so.1.79.0 /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/x86_64-linux-gnu/libcrypto.so libfs.a /app/lib/libportmidi.so /app/lib/libboost_system.so.1.79.0 /app/lib/libboost_thread.so.1.79.0 /usr/lib/x86_64-linux-gnu/libswresample.so /usr/lib/x86_64-linux-gnu/libswscale.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/x86_64-linux-gnu/libpng.so /app/lib/libportaudio.so /usr/lib/x86_64-linux-gnu/libfontconfig.so /app/lib/libportmidi.so /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so /usr/lib/x86_64-linux-gnu/libpango-1.0.so /usr/lib/x86_64-linux-gnu/libharfbuzz.so /usr/lib/x86_64-linux-gnu/libcairo.so /app/lib/libopencv_imgcodecs.so.4.8.0 /app/lib/libopencv_imgproc.so.4.8.0 /app/lib/libopencv_core.so.4.8.0 /usr/lib/x86_64-linux-gnu/libSDL2main.a /usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.2400.0 /app/lib/libced.a /app/lib/libaubio.a /usr/lib/x86_64-linux-gnu/libgio-2.0.so /usr/lib/x86_64-linux-gnu/libgobject-2.0.so /usr/lib/x86_64-linux-gnu/libglib-2.0.so 
/usr/lib/gcc/x86_64-unknown-linux-gnu/12.2.0/../../../../x86_64-unknown-linux-gnu/bin/ld: /app/lib/libaubio.a(fvec.c.o): undefined reference to symbol 'cblas_scopy'
/usr/lib/gcc/x86_64-unknown-linux-gnu/12.2.0/../../../../x86_64-unknown-linux-gnu/bin/ld: /app/lib/libopenblas.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

Any idea of what I'm doing wrong? Maybe I'm not building aubio correctly? I'll attach the flatpak manifest and the aubio patch for you to look at if needed.

abompard avatar Sep 09 '23 08:09 abompard

@Lord-Kamina can you help @abompard out with compiling aubio correctly?

@abompard the last error basicly means you didn't specify the library within the commandline.. https://stackoverflow.com/a/19905704 but i guess this should be handled by the build-tools...

Baklap4 avatar Sep 09 '23 16:09 Baklap4

I'm not sure what is going on here, but it evidently seems like there's an issue with the detection of the blas flavor.

Lord-Kamina avatar Sep 09 '23 16:09 Lord-Kamina