Skip to content
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

Enable modplug feature implicitly if available #2272

Merged
merged 2 commits into from
Sep 10, 2019
Merged

Enable modplug feature implicitly if available #2272

merged 2 commits into from
Sep 10, 2019

Conversation

uklotzde
Copy link
Contributor

@uklotzde uklotzde commented Sep 7, 2019

Enabling the modplug feature by default was the wrong way. Instead, it should be enabled separately for each release build on the build server! Each, either internal or external, distribution channel has the choice to do so. implicitly if available.

@rryan
Copy link
Member

rryan commented Sep 7, 2019 via email

@uklotzde
Copy link
Contributor Author

uklotzde commented Sep 7, 2019

This would be the preferred solution. I didn't know that we already had a blueprint for this that I could copy.

@uklotzde uklotzde changed the title Disable modplug feature by default Enable modplug feature implicitly if available Sep 7, 2019
@rrrapha
Copy link
Contributor

rrrapha commented Sep 8, 2019

I know, the "default on if present" approach is used for other flags too, but I am not a big fan of it.
This output is now ambigous:

Building with flags: asan=0 battery=1 buildtime=1 bulk=1 color=0 modplug=1 ...

I wouldn't expect that using the defaults is different than setting modplug=1 explicitly.
(It feels a bit like magic)

@daschuer
Copy link
Member

Works like a charm, thank you. LGTM.

@rrrapha: Yes, you are right, you cannot distinguish now why the flag is set or not.
Fixing this is however out of scope of his PR. Do you have an idea how?

@daschuer daschuer merged commit facba31 into mixxxdj:2.2 Sep 10, 2019
@rrrapha
Copy link
Contributor

rrrapha commented Sep 11, 2019

Fixing this is however out of scope of his PR. Do you have an idea how?

@daschuer: My preferred solution would be to remove the "default on if present" feature and not to distinguish between default flags and explicit flags.
(In case of modplug, I'd just disable it by default.)

As it is now, one has to specify all the flags explicitly to get reproducible builds.
If you run $ scons (using default flags) on different systems, the resulting binaries may differ depending on the installed packages. I find this potentially confusing, but I can live with it. ;)

@daschuer
Copy link
Member

I think you describe a rare use case. Normally people are happy if Mixxx builds instantly from source without thinking about different flags and their meaning. So IMHO we should keep it by default.

How about add an additional flag that disables the auto-detect feature?

@rrrapha
Copy link
Contributor

rrrapha commented Sep 11, 2019

I think you describe a rare use case.

I don't think it is a rare use case. It makes it a little bit harder for linux/bsd package maintainers to get the dependencies right.
For example:
If the default flags are used, and modplug is not listed as a dependency of the mixxx package, there is a problem. The build will depend on the order of packages being built on the build server. If modplug is already present when mixxx is built, it is enabled, otherwise not.
(This is just a possible pitfall, not a 'real' problem, so just ignore if you are happy with the current approach)

How about add an additional flag that disables the auto-detect feature?

This would complicate things even more, i guess..

@daschuer
Copy link
Member

Do we just need a warning than?
Warning: libmodplug not found, disable modplug support ..

@rrrapha
Copy link
Contributor

rrrapha commented Sep 12, 2019

The README has this text:

WARNING: We do not recommend building Mixxx with any
flags other than the defaults if you are going to use Mixxx
for live performance. Features that are disabled by default
may not compile or may be unstable. Be forewarned.

Maybe it could be mentioned here that not all defaults are enforced:

Not all of the default flags are not enforced. 
Some features are automatically enabled/disabled depending on
installed packages. If you want the build to be reproducible
(like in a package/port), it is safer to set the build flags explicitly.

..but this sounds like admitting that the "default on if present" approach is questionable. ;)

@Be-ing
Copy link
Contributor

Be-ing commented Sep 16, 2019

Builds are now failing on the build server. I am not sure if it is because of this or another recent PR. I have not been following the discussions about modplug closely.

@daschuer
Copy link
Member

I have recently merged 2.2 into master.
I guess we meet to do the same for the build environment.

@uklotzde
Copy link
Contributor Author

Should be unrelated as Qt5X11Extras seems to be missing?

The i386 build succeeded after fixing the Debian package. But this fix should also be unrelated.

@rryan
Copy link
Member

rryan commented Sep 16, 2019

Should be unrelated as Qt5X11Extras seems to be missing?

Sorry, I had to wipe the Ubuntu builder VM and restore from snapshot because it consumed all disk space on my system (this happens every few months). I updated the build chroots, but forgot to run the fabric "install_mixxx_dependencies" rule, so it did not have Qt5X11Extras installed.

@uklotzde uklotzde deleted the 2.2_modplug_default_disabled branch September 20, 2019 11:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants