Skip to content
This repository has been archived by the owner on Dec 18, 2022. It is now read-only.

Contact downstreams #90

Open
4 of 9 tasks
adrianheine opened this issue Jul 6, 2021 · 23 comments
Open
4 of 9 tasks

Contact downstreams #90

adrianheine opened this issue Jul 6, 2021 · 23 comments
Labels
governance Stuff needed to avoid making the same mistakes again

Comments

@adrianheine
Copy link

adrianheine commented Jul 6, 2021

I think it would make sense to talk to downstreams and ask them about switching their upstream, and their needs and ideas in general.

@falkTX
Copy link
Contributor

falkTX commented Jul 6, 2021

It is not much, but I can provide it in the kxstudio repositories and have it appear on https://kx.studio/Repositories:Applications

@vchernin
Copy link

vchernin commented Jul 6, 2021

See #25 for Flatpak/Flathub

@dvzrv
Copy link

dvzrv commented Jul 6, 2021

Good stuff!

One of my major gripes with the build system is the broken integration with wxwidgets (the "stable dev" version 3.1.x is required, but we package only the stable version 3.0.x and I'm not sure how much hackery it will be to package them side-by-side - see the infamous audacity/audacity#625 for further information on the topic).
There are a few other issues in regards to vendoring (e.g. portaudio - see audacity/audacity#522) and detection of libs (see audacity/audacity#521 and/or audacity/audacity#519).

@nazunalika
Copy link

We may want to contact the Fedora and rpmfusion as well.

I'm not sure of their contact names on github though, if any.

@caughtquick
Copy link
Member

caughtquick commented Jul 6, 2021

I'm talking in the voidlinux irc right now and they would be fine for me to make an PR, so I'll make one when a release is made.

@peepo5
Copy link

peepo5 commented Jul 6, 2021

aww look at the community coming together 😳

@emabrey emabrey added the governance Stuff needed to avoid making the same mistakes again label Jul 7, 2021
@adrianheine
Copy link
Author

One of my major gripes with the build system is the broken integration with wxwidgets (the "stable dev" version 3.1.x is required, but we package only the stable version 3.0.x and I'm not sure how much hackery it will be to package them side-by-side - see the infamous audacity/audacity#625 for further information on the topic).

Thanks for the input! Given that (the stable version) 3.2 is supposed to be released in the next months, I suppose it would make sense to target that release instead of spending time on downgrading the dependency to 3.0.

@nbsp
Copy link
Contributor

nbsp commented Jul 9, 2021

We've contacted the Arch maintainer (@dvzrv) a couple of days ago, he's willing to package for us.

Also reached out to Alpine's maintainer (Nathanael Copa [email protected]) -- he's up for the task, provided we support musl natively and use git tags.

@nm17
Copy link
Contributor

nm17 commented Jul 15, 2021

See #279 for Snap package

@TheEvilSkeleton
Copy link
Contributor

See flathub/flathub#2444 for Flathub.

@Be-ing
Copy link
Contributor

Be-ing commented Aug 19, 2021

Hello packagers and anyone else who is interested,
I'm writing a status update for those who have not been paying much attention to this repository or following my rambling toots on the fediverse. Yesterday we finally merged an overhaul of Tenacity's build system's dependency finding code in #228. The build documentation has been entirely rewritten with validated instructions for Fedora 34, Arch, Ubuntu 20.04, Windows, and macOS. Contributions documenting how to build on more distros would be appreciated.

In the process of working on that overhaul of Tenacity's build system, I wrote new CMake build systems for seven old libraries. I have forked several of the old unmaintained libraries Tenacity uses. For others that are maintained, I have written new CMake build systems and sent them upstream. All of these CMake build systems install both pkgconfig files and CMake config files. We still have work to do before we can make a first Tenacity release, but in preparation for that, please add/update the packages for these libraries in your distributions. Generally distros are missing one or two packages entirely because they were vendored before.

https://github.com/mixxxdj/portmidi/releases/tag/236
https://github.com/tenacityteam/portsmf/releases/tag/239
https://github.com/claytonotey/libsbsms/releases/tag/2.3.0
https://github.com/tenacityteam/libid3tag/releases/tag/0.16.1 (I integrated patches that have been floating around distro packages for many years)

I have added CMake build systems to the following libraries as well which have not had new releases yet:
https://gitlab.com/soundtouch/soundtouch/-/merge_requests/11 (merged upstream, still some details to take care of for compiler options)
njh/twolame#98 (no response from upstream yet)

I forked libmad as well but there is CPU architecture specific code in there which I am unable to test myself. I don't know if I did the CPU architecture detection right in CMakeLists.txt. I would appreciate help reviewing and testing that on ARM, PPC, MIPS, and SPARC. Pull requests would be appreciated. I am uncomfortable making a release of the libmad fork without people testing on a variety of CPU architectures.

If you have not done so already, please update PortAudio to 19.7 which was released in April 2021. This is required for Tenacity and other PortAudio applications to work with PipeWire through the JACK API for many devices. My long running pull request to rewrite PortAudio's CMake build system was just merged the other day but I do not know when the next PortAudio release will be.

All of the vendored libraries have been removed from the repository with the exception of libnyquist. Tenacity has a bizarre function which #includes a libnyquist header (in the middle of the .cpp file wut) and mixes libnyquist symbols with wxString from wxWidgets. That libnyquist header may be a private header of the library, but I'm not actually sure because upstream libnyquist's build system doesn't install anything at all. I doubt anyone else will be interested in using that library in the future considering there are more widely used, better documented and maintained alternatives such as Faust (which would be nice to integrate in Tenacity #457). So I am inclined to just leave libnyquist vendored.

As for wxWidgets, Tenacity still depends on wxWidgets 3.1, however now the build system doesn't force building Audacity's fork of it. I recommend building Tenacity with wxWidgets 3.1.5 because this is required for high DPI support. @leio has started work (#300) on restoring compatibility with wxWidgets 3.0.x. Help with that would be appreciated!

My motivation for doing all that work on Tenacity's dependencies was to get them packaged in vcpkg for Windows and macOS builds (dealing with Visual Studio project files for Windows builds is so awful that it is easier to write a CMakeLists.txt in a few hours). Conan has been removed from Tenacity's build system entirely. In contrast to the way Conan was implemented with complex hacks deeply intertwined with Tenacity's build system, vcpkg only requires one small hack for Windows for Tenacity to build on macOS and Windows; all the rest of the CMake scripts are the same for building with vcpkg as Linux distribution packages. This is also how Mixxx is set up (I copied a handful of CMake find modules from Mixxx verbatim) and it is quite manageable to maintain.

@dvzrv
Copy link

dvzrv commented Aug 19, 2021

@Be-ing this is quite an achievement. Many thanks for going the extra mile and taking care of portmidi, portsmf, libsbsms, libmad and libid3tag by effectively becoming their new upstream! This is much appreciated (especially from a distribution point of view). Hats off!

@jonathonball
Copy link

Thank you devs for all your hard work on this.

@emielmolenaar
Copy link

Great stuff guys. Thanks a lot for all the hard work.

@Be-ing
Copy link
Contributor

Be-ing commented Aug 19, 2021

There is an ugly issue to beware of with PortSMF. It didn't really have a build system or releases before the fork, so distributions installed its headers to different locations. I made the fork install the headers to CMAKE_INSTALL_INCLUDEDIR/portsmf to match the Arch package, but I later found that Debian's portsmf package has been installing the headers to /usr/include/portSMF with capital "SMF". Tenacity's build system has an ugly hack to check for and build with either. If your distro package installed to /usr/include/portSMF before, please check if any other packages that depend on portsmf would be broken by installing to /usr/include/portsmf.

@Be-ing
Copy link
Contributor

Be-ing commented Aug 19, 2021

And to be completely clear, please do not package Tenacity yet. We still have rebranding to do to remove Audacity trademarks. For now, please update/add packages for Tenacity's dependencies in preparation for when we do make a first release of Tenacity.

@KAMiKAZOW
Copy link

An openSUSE packager is handling Tenacity: https://build.opensuse.org/package/show/home:Sauerland/tenacity

So far only in his own home repo. No idea if he plans to submit it to openSUSE's Multimedia repo for eventual inclusion in the main repo after Tenacity had its formal release.

@Be-ing
Copy link
Contributor

Be-ing commented Aug 19, 2021

Another heads up for packagers: all those strange CMake options are gone now so do not copy and paste them from Audacity packages. Tenacity only uses system dependencies. It's just a normal CMake build now. There are CMake options to disable features, but everything is enabled by default if the required libraries are found. Refer to BUILDING.md for details.

@Be-ing
Copy link
Contributor

Be-ing commented Aug 20, 2021

@lanodan could you update the libraries for Gentoo?

@Be-ing
Copy link
Contributor

Be-ing commented Aug 20, 2021

@imciner2 could you update the libraries for Fedora?

@Be-ing
Copy link
Contributor

Be-ing commented Aug 21, 2021

SoundTouch just made a new 2.3.0 release with CMake support.

@Yamakuzure
Copy link

SoundTouch just made a new 2.3.0 release with CMake support.

The sources are now here: https://codeberg.org/soundtouch/soundtouch

@Be-ing
Copy link
Contributor

Be-ing commented Apr 26, 2022

Yep, I helped SoundTouch find a new host when GitLab.com mysteriously banned them without explanation.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
governance Stuff needed to avoid making the same mistakes again
Projects
None yet
Development

No branches or pull requests

17 participants