-
-
Notifications
You must be signed in to change notification settings - Fork 943
Enable building on Fedora linux #3239
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
82d0146
Add Fedora linux dependencies
bkmgit 9ab173d
Do not use make clean for rubygem interception
bkmgit dbb5309
Ensure libGLEW can be found on Linux
bkmgit e9702f1
Additional Fedora linux dependencies
bkmgit 2f3906d
Ensure GL3W gets found on Linux
bkmgit 7faf22d
Rubygem interception not required
bkmgit ad01951
Remove trailing spaces
bkmgit File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, I'm wondering if all of this is necessary since vcpkg bootstraps itself and some of these dependencies (like SDL2 or reproc or ninja) should be coming from there rather than the system. Also I'm not sure
jack-audio-connection-kit-devel
andsupercollider-devel
would even be necessary (butsupercollider
would be)Also is sc3-plugins included in the
supercollider
package? That is needed for some synthsI'll do some testing again later today to see about this, but this PR is looking pretty good now!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
supercollider-devel will bring in supercollider. sc3-plugins does not seem to be packaged in the main repositories:
https://src.fedoraproject.org/rpms/supercollider/blob/rawhide/f/supercollider.spec
There is no separate sc3-plugins in Fedora. sc3-plugins are available from Audinux:
https://github.com/audinux/fedora-spec/blob/master/supercollider/supercollider-sc3-plugins.spec
It would be helpful to know what features are not available without this.
Using packaged dependencies minimizes bloat. It seems many changes are needed in the CMakeLists files to check if an installed library can be used, at present options for only either a set of all installed or all downloaded dependencies it would be great to use what is packaged. For stable dependencies, it would be great to use what is packaged in many distributions. For example catch2, crossguid, FLAC, fmt, reproc, ogg, opus, SDL2, sndfile, uuid, vorbis should be used if possible - using these would also enable easier packaging in the main repositories. KissFFT and gl3w are not in Fedora main repositories, though could be added. vcpkg is not bootstrapped, packaged version seems adequate.
One also needs to start jack audio in a separate terminal,
$jackd -d alsa
.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's a couple of the synthdefs that need sc3-plugins. The only synth off the top of my head that needs it is the
:piano
synth, but @samaaron can probably elaborate on othersThe vcpkg builds (and BUILD-LINUX.md instructions) are specifically for users (who tend to be on Ubuntu or Raspbian and often older versions) that want it working with tested dep versions and it is used for the macOS/Windows releases. I made it possible to build without any vendored dependencies specifically to support the Linux packaging use-case
Would it be possible to package kissfft and gl3w then for Fedora? I'm happy to assist with that and then assist with creating an rpmspec that builds entirely from system dependencies
Also you can use pipewire with Sonic Pi too instead of JACK if desired (I know desktop Fedora defaults to that now), and Sonic Pi should be able to start a basic JACK server itself if it needs -- Let us know if that isn't working right
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh yeah and only
supercollider
but notsupercollider-devel
should be necessary since only the scsynth server binary and base ugens/plugins are actually needed. Not any of the development headers or anything like thatThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Kiss FFT is in Fedora https://src.fedoraproject.org/rpms/kiss-fft so only gl3w and sc3-plugins need to be added to the main repositories.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the interest of getting the gl3w fix and basic Fedora instructions merged, can you try just the following and see if this is all that is needed with the default build?
It seems to be all that I need in a freshly installed VM
We can work on/track the proper Fedora packaging in a new issue
Thank you again so much for your work on this!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks will check. Would suggest using vcpkg from Fedora repositories since the setup for that matches typical user preferences which a direct download may not.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I can imagine a number of users may prefer it to use system vcpkg if available, especially since then vcpkg won't try to manage its own prebuilt ninja/cmake for bootstrapping. So we do appreciate the suggestion!
I just suppose that would be up to @samaaron though because then we wouldn't be managing vcpkg repo version (for packages) ourselves for those users, and I'm not sure it gets us much benefit over the current choice between all system dependencies or all non-Qt/non-supercollider dependencies managed by us (once all of the system deps are available in Fedora that is)
Vcpkg won't be necessary for users at all if they choose to build using all system deps (
-s
to the build scripts)Also as far as I know, we tried to manage dependencies using our own bootstrapped vcpkg (with repo pinned to a particular version) to begin with because Ubuntu was missing a lot of deps or the deps were too old, and users with less coding experience ran into too many difficulties getting it all built themselves if a distro package wasn't available
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Packaged version of vcpkg in Fedora works very well and is much preferred to bootstrapping. The version is quite recent.
At present one can either use all system dependencies or none. Updating this to check for suitable versions of system dependencies and using them if available is another ticket.
It is possible to integrate CI testing using podman to check builds work on a variety of distributions. Can add this for Fedora.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need the following for it to build in GitHub actions see #3247:
Would have preferred to use vcpkg from Fedora repos, but it seems the current configuration
forces downloads of most packages including bootstrapping vcpkg. In Fedora telemetry data is
disabled, but default vcpkg install has telemetry
enabled.
To minimize bloat, it is better to determine minimum and possibly maximum release versions of
dependencies and use those, rather than specific commits. This also enables taking advantage
of security updates. This does of course also require more effort in maintenance and testing,
though automation can help.