-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Lib export with libdjinterop #2753
Conversation
Nice work! Thanks for sharing. I set this pull request as a Draft.
No problem, we'll get there when we get there. |
If you messed up the merge commit, please amend the commit and force push to ensure that every commit is still buildable. Otherwise it will cause problems when bisecting issues. I recommend to use |
Thank you for the suggestion @Holzhaus - although I do not think I would have caught the issues with verbose commits turned on, as there were ~600 individual commits in the merge from master. I believe the regression came about through git's auto-merge. I have just tried rebasing, only to discover that some of those 600 commits don't even rebase cleanly amongst themselves. I'll try to minimise the number of "fixup" commits as best I can. |
You can reset your local branch to the state you pushed last (via WARNING: Doing a hard reset will undo all your local changes in the working tree that you didn't push yet. Better make a backup via |
Please don't rebase any commits from master! Otherwise we cannot merge this. Instead rebase your branch on master and ensure that all commits on your branch are still sane, i.e. buildable. |
e85c798
to
3284c9f
Compare
There is potential for a lot of confusion with terminology here. We have a loose concept of the "engine" in Mixxx which somewhat corresponds to the audio processing (but not really) and here you are using "Engine" to refer to something entirely different. Can you please use "EnginePrime" in file and class names? |
I'm not precious about the class naming, so I can change this. Note that the actual database format, technically, is simply called "Engine" (great name 🤦), the library on disk is always called "Engine Library", whereas Engine Prime is the name of an application. However, even within the official ecosystem, "Engine" also refers to similar older software that preceded Engine Prime. To add to the confusion, Engine Prime is starting to be referred to as Engine in some official websites too... ugh. |
Now renamed throughout. |
36aa302
to
ee6a275
Compare
Travis is showing a test failure that I can't reproduce locally, and which looks like it might be transient:
@Be-ing, what do you recommend in this situation? Is there a convenient way to re-run CI builds without faking a commit? |
Sorry, we've been having issues with spurious test failures for a while. Unfortunately no one has figured out what is going wrong. I manually restarted the Travis build. |
c1fec01
to
080464e
Compare
@Be-ing, please could you re-run the Travis and AppVeyor builds for this PR? The Travis build has again failed a unit test for an odd reason ( If all is well, I'll mark this as Ready for Review. Thanks! |
I restarted the CI builds. |
Tried this branch today and got a segfault when running mixxx. Backtrace:
|
Build succeeded! 🎉 @uklotzde anything left to do before merging? |
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.
No objections, ready to merge.
@daschuer Please take care of merging 2.3 to main before we merge major new features into main. |
Thanks for this new feature @mr-smidge! And thank you for your patience with the review. Please continue to open more PRs as you improve the performance. |
Thanks to everyone who looked at this PR - it's my first "proper" contribution to Mixxx (and definitely not my last!), and I appreciate it's a lot of effort to review and advise on the right way forward. Really pleased to have got to the end of the marathon! I am going to keep chipping away at the enhancements for |
@mr-smidge would you like to write a post for the mixxx.org blog about this new feature? The code for the website is at https://github.com/mixxxdj/website and the blog posts use Markdown. |
Sure, I'll try to put something together in the next week - thanks! |
Unfortunatly this breaks the PPA build:
|
Does the referenced hash no longer exist? @mr-smidge did you force push to the libdjinterop repo? |
Hmmm, the relevant portion of CMakeLists.txt is:
The tag definitely exists: https://github.com/xsco/libdjinterop/releases/tag/0.14.6 |
Blog post: Let's publish the post not before main is back in a usable state. Currently there are massive issues with cue objects and control objects that cause debug assertions. |
...not caused by this PR ;) |
Integration into the PPA build should work the same way as it does for libkeyfinder. |
@daschuer the error message How does the PPA build work? Is there anything special to include git? I notice that keyfinder is a plain old download, rather than a git clone:
|
The same applies to the RPM builds. All sources must be available and placed in the |
If the (I have no prior experience building PPAs or RPMs, but obviously happy to fix things I've broken where I can!) |
The download and packaging of additional sources is part of the DEB or RPM builds and does not belong into CMakeLists.txt. It's the responsibility of the maintainer to decide what gets packaged and which features are enabled. |
As a quick fix we could add -DENGINEPRIME=OFF to the Debian build. |
No, let's not procrastinate. Fix the real issue. |
First fix the build, then modify it: #3595 libKeyFinder is also still disabled (due to licensing issues I guess) |
This is fixed in #3476. We have already been distributing libkeyfinder without updating Mixxx's license. |
@mr-smidge if you want to, you could add the interop option to the new export improvement branch: #3572 |
I suggest to keep the export where it is until #3572 has been merged. Don't needlessly extend the scope of a PR! |
@poelzi It sounds like a good idea to consolidate the idea of exporting in one place in the GUI, but I do agree with Uwe that it might be better done as a follow-up to your PR rather than changing it in-flight - the scope could easily expand! |
Master should soon be usable again after merging #3599. Yet, we should enable this feature in the DEB/PPA builds before publishing the blog post. |
This PR introduces new functionality to allow a user to export their library to the Engine Library format, as used by Prime-series DJ equipment. It achieves this using an external library
libdjinterop
(disclaimer: I am the author oflibdjinterop
).The functionality contained in this PR is in an early-but-hopefully-functional state, and a few aspects of the setup are not optimal. What is supported:
Caveats:
libdjinterop
itself at present).libdjinterop
library is not perfect, and should be considered still in beta.libdjinterop
builds ok - haven't tried Mixxx with these enhancements yet). I don't have access to a MacOS development environment.Motivation for submitting this PR in the current state:
libdjinterop
library itself.It is not my expectation by any measure that the next official release of Mixxx contains this library export functionality: but I hope I/we can get it there soon :-).